Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8e1c696 authored by Aniket Kumar Lata's avatar Aniket Kumar Lata Committed by Andy Hung
Browse files

Visualizer: Fix deadlock on close



Visualizer gets stuck in mCaptureThread::requestExitAndWait due to a
deadlock between mCaptureThread::mRunning and mCaptureLock.

Temporarily release mCaptureLock upon mCaptureThread::requestExitAndWait.

Test: Clarity -> Response, rapidly toggle visualizer enable, disable
Bug: 135326776
authored-by: default avatarWeiyin Jiang <wjiang@codeaurora.org>
Change-Id: If32431c4d7b271b7ea61168cb1a5a42f3a1cd66e
parent 4c6d9952
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -77,10 +77,13 @@ status_t Visualizer::setEnabled(bool enabled)
    if (t != 0) {
        if (enabled) {
            if (t->exitPending()) {
                mCaptureLock.unlock();
                if (t->requestExitAndWait() == WOULD_BLOCK) {
                    mCaptureLock.lock();
                    ALOGE("Visualizer::enable() called from thread");
                    return INVALID_OPERATION;
                }
                mCaptureLock.lock();
            }
        }
        t->mLock.lock();