summaryrefslogtreecommitdiffstats
path: root/media/libmedia/Visualizer.cpp
diff options
context:
space:
mode:
authorOscar Rydhé <oscar.rydhe@sonyericsson.com>2011-12-29 13:57:04 +0100
committerSteve Kondik <steve@cyngn.com>2015-11-07 02:24:47 -0800
commit5d9ec7585ad39f73690fddbd864f3e3f5c1bde4d (patch)
tree88b5fd9ca4ba1bc1db3e2abe88bb276b50143af7 /media/libmedia/Visualizer.cpp
parent45c06ec4ffad8f5a602db37b28537267f687c3ef (diff)
downloadframeworks_av-5d9ec7585ad39f73690fddbd864f3e3f5c1bde4d.zip
frameworks_av-5d9ec7585ad39f73690fddbd864f3e3f5c1bde4d.tar.gz
frameworks_av-5d9ec7585ad39f73690fddbd864f3e3f5c1bde4d.tar.bz2
Stop thread before deleting object reference
If setPeriodicCapture is called Visualizer will start a thread and do periodic callbacks. When native_finalize is called the reference to the class is deleted. If a callback happens after this the reference is no longer valid and when used from the callback method the vm crashes. With this patch the thread will be terminated before deleting the reference. Change-Id: I30f331437ddad05f8d52c244cdbecb1859a0abd2
Diffstat (limited to 'media/libmedia/Visualizer.cpp')
-rw-r--r--media/libmedia/Visualizer.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp
index f5c1b1f..8d83c1b 100644
--- a/media/libmedia/Visualizer.cpp
+++ b/media/libmedia/Visualizer.cpp
@@ -94,6 +94,14 @@ status_t Visualizer::setEnabled(bool enabled)
return status;
}
+void Visualizer::cancelCaptureCallBack()
+{
+ sp<CaptureThread> t = mCaptureThread;
+ if (t != 0) {
+ t->requestExitAndWait();
+ }
+}
+
status_t Visualizer::setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t flags,
uint32_t rate, bool force)
{