am 83faee05: AudioFlinger: fix stop detection for static tracks

* commit '83faee053cfd4251dbb591b62039f563ffdac399':
  AudioFlinger: fix stop detection for static tracks
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index eb37028..d123cbb 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -2831,7 +2831,7 @@
         // hence the test on (mMixerStatus == MIXER_TRACKS_READY) meaning the track was mixed
         // during last round
         uint32_t minFrames = 1;
-        if (!track->isStopped() && !track->isPausing() &&
+        if ((track->sharedBuffer() == 0) && !track->isStopped() && !track->isPausing() &&
                 (mMixerStatus == MIXER_TRACKS_READY)) {
             if (t->sampleRate() == (int)mSampleRate) {
                 minFrames = mNormalFrameCount;
@@ -2990,7 +2990,8 @@
             if (track->isStopped()) {
                 track->reset();
             }
-            if (track->isTerminated() || track->isStopped() || track->isPaused()) {
+            if ((track->sharedBuffer() != 0) || track->isTerminated() ||
+                    track->isStopped() || track->isPaused()) {
                 // We have consumed all the buffers of this track.
                 // Remove it from the list of active tracks.
                 // TODO: use actual buffer filling status instead of latency when available from
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 2a85115..9a0bbcd 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -737,6 +737,8 @@
                 return (mStreamType == AUDIO_STREAM_CNT);
             }
 
+            sp<IMemory> sharedBuffer() const { return mSharedBuffer; }
+
             bool presentationComplete(size_t framesWritten, size_t audioHalFrames);
             void triggerEvents(AudioSystem::sync_event_t type);