diff options
-rw-r--r-- | src/opensles/AudioInputStreamOpenSLES.cpp | 13 | ||||
-rw-r--r-- | src/opensles/AudioInputStreamOpenSLES.h | 1 | ||||
-rw-r--r-- | src/opensles/AudioOutputStreamOpenSLES.cpp | 16 | ||||
-rw-r--r-- | src/opensles/AudioOutputStreamOpenSLES.h | 1 |
4 files changed, 18 insertions, 13 deletions
diff --git a/src/opensles/AudioInputStreamOpenSLES.cpp b/src/opensles/AudioInputStreamOpenSLES.cpp index 1dc5f998..62470d9f 100644 --- a/src/opensles/AudioInputStreamOpenSLES.cpp +++ b/src/opensles/AudioInputStreamOpenSLES.cpp @@ -216,19 +216,16 @@ error: Result AudioInputStreamOpenSLES::close() { LOGD("AudioInputStreamOpenSLES::%s()", __func__); - mLock.lock(); + std::lock_guard<std::mutex> lock(mLock); Result result = Result::OK; if (getState() == StreamState::Closed){ result = Result::ErrorClosed; } else { - mLock.unlock(); // avoid recursive lock - requestStop(); - mLock.lock(); + requestStop_l(); // invalidate any interfaces mRecordInterface = nullptr; result = AudioStreamOpenSLES::close_l(); } - mLock.unlock(); // avoid recursive lock return result; } @@ -296,8 +293,12 @@ Result AudioInputStreamOpenSLES::requestFlush() { Result AudioInputStreamOpenSLES::requestStop() { LOGD("AudioInputStreamOpenSLES(): %s() called", __func__); - std::lock_guard<std::mutex> lock(mLock); + return requestStop_l(); +} + +// Call under mLock +Result AudioInputStreamOpenSLES::requestStop_l() { StreamState initialState = getState(); switch (initialState) { case StreamState::Stopping: diff --git a/src/opensles/AudioInputStreamOpenSLES.h b/src/opensles/AudioInputStreamOpenSLES.h index 7be1c96d..08e7a056 100644 --- a/src/opensles/AudioInputStreamOpenSLES.h +++ b/src/opensles/AudioInputStreamOpenSLES.h @@ -46,6 +46,7 @@ public: Result requestStop() override; protected: + Result requestStop_l(); Result updateServiceFrameCounter() override; diff --git a/src/opensles/AudioOutputStreamOpenSLES.cpp b/src/opensles/AudioOutputStreamOpenSLES.cpp index 0e264741..5791b5ec 100644 --- a/src/opensles/AudioOutputStreamOpenSLES.cpp +++ b/src/opensles/AudioOutputStreamOpenSLES.cpp @@ -243,19 +243,17 @@ Result AudioOutputStreamOpenSLES::onAfterDestroy() { } Result AudioOutputStreamOpenSLES::close() { - mLock.lock(); + LOGD("AudioOutputStreamOpenSLES::%s()", __func__); + std::lock_guard<std::mutex> lock(mLock); Result result = Result::OK; if (getState() == StreamState::Closed){ result = Result::ErrorClosed; } else { - mLock.unlock(); // avoid recursive lock - requestPause(); - mLock.lock(); + requestPause_l(); // invalidate any interfaces mPlayInterface = nullptr; result = AudioStreamOpenSLES::close_l(); } - mLock.unlock(); // avoid recursive lock return result; } @@ -317,8 +315,12 @@ Result AudioOutputStreamOpenSLES::requestStart() { Result AudioOutputStreamOpenSLES::requestPause() { LOGD("AudioOutputStreamOpenSLES(): %s() called", __func__); - std::lock_guard<std::mutex> lock(mLock); + return requestPause_l(); +} + +// Call under mLock +Result AudioOutputStreamOpenSLES::requestPause_l() { StreamState initialState = getState(); switch (initialState) { case StreamState::Pausing: @@ -374,8 +376,8 @@ Result AudioOutputStreamOpenSLES::requestFlush_l() { Result AudioOutputStreamOpenSLES::requestStop() { LOGD("AudioOutputStreamOpenSLES(): %s() called", __func__); - std::lock_guard<std::mutex> lock(mLock); + StreamState initialState = getState(); switch (initialState) { case StreamState::Stopping: diff --git a/src/opensles/AudioOutputStreamOpenSLES.h b/src/opensles/AudioOutputStreamOpenSLES.h index d74faf67..ed11eb9b 100644 --- a/src/opensles/AudioOutputStreamOpenSLES.h +++ b/src/opensles/AudioOutputStreamOpenSLES.h @@ -45,6 +45,7 @@ public: Result requestStop() override; protected: + Result requestPause_l(); void setFramesRead(int64_t framesRead); |