summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2014-10-30 10:18:37 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-30 10:18:37 +0000
commitadd9fe7916fe2c00f174731bcb4a0547ca773248 (patch)
tree7bb0cb044ce5edae072e16b36feca3e56c793974 /media
parente7b9cf45fcbca0caa8d94a814c677dfa0eaa87ac (diff)
parent447326d2cda36c66ad0e943ecc75c231d27e804a (diff)
downloadframeworks_av-add9fe7916fe2c00f174731bcb4a0547ca773248.zip
frameworks_av-add9fe7916fe2c00f174731bcb4a0547ca773248.tar.gz
frameworks_av-add9fe7916fe2c00f174731bcb4a0547ca773248.tar.bz2
am 447326d2: am aac745f2: Merge "libmedia: ensure mCaptureThread exit within Visualizer destructor" into lmp-mr1-dev
* commit '447326d2cda36c66ad0e943ecc75c231d27e804a': libmedia: ensure mCaptureThread exit within Visualizer destructor
Diffstat (limited to 'media')
-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));
}