diff options
| author | Ricardo Garcia <rago@google.com> | 2015-06-18 21:01:53 -0700 | 
|---|---|---|
| committer | Eric Laurent <elaurent@google.com> | 2015-06-19 17:22:45 -0700 | 
| commit | 9b030df5ead9c039e4ebb16c745e2cc40e953d48 (patch) | |
| tree | f57b2a1d364dbc21616a622e2b49af1af49ffd2b | |
| parent | 3fc792fe36b0b9100f74185665221b37f650ff65 (diff) | |
| download | frameworks_av-9b030df5ead9c039e4ebb16c745e2cc40e953d48.zip frameworks_av-9b030df5ead9c039e4ebb16c745e2cc40e953d48.tar.gz frameworks_av-9b030df5ead9c039e4ebb16c745e2cc40e953d48.tar.bz2  | |
Fix for Visualizer release bug
Setting callback reference to NULL before requesting exit.
bug: 21804802
Change-Id: I54323959686880f4e7a10b766850f8c86c06edb6
| -rw-r--r-- | include/media/Visualizer.h | 3 | ||||
| -rw-r--r-- | media/libmedia/Visualizer.cpp | 12 | 
2 files changed, 6 insertions, 9 deletions
diff --git a/include/media/Visualizer.h b/include/media/Visualizer.h index b92f816..186e018 100644 --- a/include/media/Visualizer.h +++ b/include/media/Visualizer.h @@ -95,7 +95,8 @@ public:      // install a callback to receive periodic captures. The capture rate is specified in milliHertz      // and the capture format is according to flags  (see callback_flags). -    status_t setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t flags, uint32_t rate); +    status_t setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t flags, uint32_t rate, +                                bool force = false);      // set the capture size capture size must be a power of two in the range      // [VISUALIZER_CAPTURE_SIZE_MAX. VISUALIZER_CAPTURE_SIZE_MIN] diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp index dc46038..f5c1b1f 100644 --- a/media/libmedia/Visualizer.cpp +++ b/media/libmedia/Visualizer.cpp @@ -54,12 +54,8 @@ Visualizer::Visualizer (const String16& opPackageName,  Visualizer::~Visualizer()  {      ALOGV("Visualizer::~Visualizer()"); -    if (mCaptureThread != NULL) { -        mCaptureThread->requestExitAndWait(); -        mCaptureThread.clear(); -    } -    mCaptureCallBack = NULL; -    mCaptureFlags = 0; +    setEnabled(false); +    setCaptureCallBack(NULL, NULL, 0, 0, true);  }  status_t Visualizer::setEnabled(bool enabled) @@ -99,14 +95,14 @@ status_t Visualizer::setEnabled(bool enabled)  }  status_t Visualizer::setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t flags, -        uint32_t rate) +        uint32_t rate, bool force)  {      if (rate > CAPTURE_RATE_MAX) {          return BAD_VALUE;      }      Mutex::Autolock _l(mCaptureLock); -    if (mEnabled) { +    if (force || mEnabled) {          return INVALID_OPERATION;      }  | 
