Notify FilterCallbackScheduler to wake up it while stopping.

Bug: 183057734
Test: atest android.media.tv.tuner.cts
Change-Id: I2b9d45fa7df3f2490893cc24d98c0e0baaaf0c2c
This commit is contained in:
Hongguang
2021-11-04 16:55:53 -07:00
committed by Hongguang Chen
parent bdd3958912
commit 74bc43bdc2

View File

@@ -88,7 +88,11 @@ void FilterCallbackScheduler::start() {
}
void FilterCallbackScheduler::stop() {
mIsRunning = false;
{
std::unique_lock<std::mutex> lock(mLock);
mIsRunning = false;
mCv.notify_all();
}
if (mCallbackThread.joinable()) {
mCallbackThread.join();
}
@@ -113,6 +117,10 @@ void FilterCallbackScheduler::threadLoopOnce() {
// okay to send data.
mCv.wait(lock);
}
if (!mIsRunning) {
lock.unlock();
return;
}
// condition_variable wait locks mutex on timeout / notify
if (!mCallbackBuffer.empty()) {