diff --git a/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.cpp b/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.cpp index b4c9e62..b2a6211 100644 --- a/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.cpp +++ b/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.cpp @@ -50,15 +50,17 @@ SLresult OutputMixerOpenSL::open() { return result; error: - close(); + closeLocked(); return result; } void OutputMixerOpenSL::close() { std::lock_guard lock(mLock); + closeLocked(); +} +void OutputMixerOpenSL::closeLocked() { if (--mOpenCount == 0) { - // destroy output mix object, and invalidate all associated interfaces if (mOutputMixObject != nullptr) { (*mOutputMixObject)->Destroy(mOutputMixObject); mOutputMixObject = nullptr; diff --git a/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.h b/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.h index 409ee6a..1b6c20f 100644 --- a/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.h +++ b/internal/oboe/oboe_opensles_OutputMixerOpenSLES_android.h @@ -40,6 +40,8 @@ class OutputMixerOpenSL { SLDataSource *audioSource); private: + void closeLocked(); + // Make this a safe Singleton OutputMixerOpenSL()= default; ~OutputMixerOpenSL()= default;