AudioFlinger: do not reset mHwPaused on flush
The hardware pause feature is hidden from the track clients.
Make the current implementation consistent that when mHwPaused
is set it requires a resume() after a flush().
Test: see bug
Bug: 335784313
Change-Id: I4c7db89277a6144b9b78223fa6f899c85adfb3fc
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index bcd8b99..fd5d5fc 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -7145,11 +7145,14 @@
{
PlaybackThread::flushHw_l();
mOutput->flush();
- mHwPaused = false;
mFlushPending = false;
mTimestampVerifier.discontinuity(discontinuityForStandbyOrFlush());
mTimestamp.clear();
mMonotonicFrameCounter.onFlush();
+ // We do not reset mHwPaused which is hidden from the Track client.
+ // Note: the client track in Tracks.cpp and AudioTrack.cpp
+ // has a FLUSHED state but the DirectOutputThread does not;
+ // those tracks will continue to show isStopped().
}
int64_t DirectOutputThread::computeWaitTimeNs_l() const {