OSDN Git Service

audioflinger: offloaded tracks flush/pause order
authorEric Laurent <elaurent@google.com>
Fri, 30 Aug 2013 22:12:37 +0000 (15:12 -0700)
committerEric Laurent <elaurent@google.com>
Fri, 30 Aug 2013 22:12:37 +0000 (15:12 -0700)
Make sure that a flush received after a pause is forwarded
to the HAL after the pause.

Change-Id: Ib3221f70c59f8b3dbbac20b23104f6b779b75be0

services/audioflinger/Threads.cpp

index bc01ede..3921b68 100644 (file)
@@ -3810,10 +3810,6 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
     size_t count = mActiveTracks.size();
 
     mixer_state mixerStatus = MIXER_IDLE;
-    if (mFlushPending) {
-        flushHw_l();
-        mFlushPending = false;
-    }
     // find out which tracks need to be processed
     for (size_t i = 0; i < count; i++) {
         sp<Track> t = mActiveTracks[i].promote();
@@ -3938,6 +3934,12 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
         // compute volume for this track
         processVolume_l(track, last);
     }
+
+    if (mFlushPending) {
+        flushHw_l();
+        mFlushPending = false;
+    }
+
     // remove all the tracks that need to be...
     removeTracks_l(*tracksToRemove);