From ba04dbe7732bc2d016bf81c81bd349d931de63f2 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Thu, 19 Mar 2020 21:32:53 -0700 Subject: [PATCH] SoundPool: Fix stream playback thread startup wait Test: see bug for details, verified by logcat and sound analysis Test: SoundPool(Aac|Haptic|Midi|Ogg)Test Bug: 151781575 Change-Id: Iba65953cdfa4ab1cabc33650790e9fd5a2787786 --- media/jni/soundpool/StreamManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/media/jni/soundpool/StreamManager.cpp b/media/jni/soundpool/StreamManager.cpp index 79e4d8ae6e267..c61221892c280 100644 --- a/media/jni/soundpool/StreamManager.cpp +++ b/media/jni/soundpool/StreamManager.cpp @@ -340,8 +340,10 @@ void StreamManager::run(int32_t id) int64_t waitTimeNs = kWaitTimeBeforeCloseNs; std::unique_lock lock(mStreamManagerLock); while (!mQuit) { - mStreamManagerCondition.wait_for( - lock, std::chrono::duration(waitTimeNs)); + if (mRestartStreams.empty()) { // on thread start, mRestartStreams can be non-empty. + mStreamManagerCondition.wait_for( + lock, std::chrono::duration(waitTimeNs)); + } ALOGV("%s(%d) awake", __func__, id); sanityCheckQueue_l();