summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2014-10-28 21:22:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-10-28 21:22:05 +0000
commitaac745f29b0e8b18e9f9aff0d122c7d5d82f218a (patch)
treef0d9b87888202a6d6b48271bd28e9d909742703c /media/libmedia
parentb80a2a8871d3af8619bf774a0c9ddbac8d598bf9 (diff)
parent63f6ffb996a7ffc920012f05c3deca731614373f (diff)
downloadframeworks_av-aac745f29b0e8b18e9f9aff0d122c7d5d82f218a.zip
frameworks_av-aac745f29b0e8b18e9f9aff0d122c7d5d82f218a.tar.gz
frameworks_av-aac745f29b0e8b18e9f9aff0d122c7d5d82f218a.tar.bz2
Merge "libmedia: ensure mCaptureThread exit within Visualizer destructor" into lmp-mr1-dev
Diffstat (limited to 'media/libmedia')
-rw-r--r--media/libmedia/Visualizer.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp
index c146b8d..f91e3e4 100644
--- a/media/libmedia/Visualizer.cpp
+++ b/media/libmedia/Visualizer.cpp
@@ -52,6 +52,13 @@ Visualizer::Visualizer (int32_t priority,
Visualizer::~Visualizer()
{
+ ALOGV("Visualizer::~Visualizer()");
+ if (mCaptureThread != NULL) {
+ mCaptureThread->requestExitAndWait();
+ mCaptureThread.clear();
+ }
+ mCaptureCallBack = NULL;
+ mCaptureFlags = 0;
}
status_t Visualizer::setEnabled(bool enabled)
@@ -102,20 +109,18 @@ status_t Visualizer::setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t
return INVALID_OPERATION;
}
- sp<CaptureThread> t = mCaptureThread;
- if (t != 0) {
- t->mLock.lock();
+ if (mCaptureThread != 0) {
+ mCaptureLock.unlock();
+ mCaptureThread->requestExitAndWait();
+ mCaptureLock.lock();
}
+
mCaptureThread.clear();
mCaptureCallBack = cbk;
mCaptureCbkUser = user;
mCaptureFlags = flags;
mCaptureRate = rate;
- if (t != 0) {
- t->mLock.unlock();
- }
-
if (cbk != NULL) {
mCaptureThread = new CaptureThread(*this, rate, ((flags & CAPTURE_CALL_JAVA) != 0));
}