diff options
-rw-r--r-- | services/audioflinger/Threads.cpp | 16 | ||||
-rw-r--r-- | services/audioflinger/Threads.h | 4 |
2 files changed, 17 insertions, 3 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index ecdbf43..ee5dc24 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -2574,11 +2574,10 @@ void AudioFlinger::PlaybackThread::cacheParameters_l() } } -void AudioFlinger::PlaybackThread::invalidateTracks(audio_stream_type_t streamType) +void AudioFlinger::PlaybackThread::invalidateTracks_l(audio_stream_type_t streamType) { ALOGV("MixerThread::invalidateTracks() mixer %p, streamType %d, mTracks.size %d", this, streamType, mTracks.size()); - Mutex::Autolock _l(mLock); size_t size = mTracks.size(); for (size_t i = 0; i < size; i++) { @@ -2589,6 +2588,12 @@ void AudioFlinger::PlaybackThread::invalidateTracks(audio_stream_type_t streamTy } } +void AudioFlinger::PlaybackThread::invalidateTracks(audio_stream_type_t streamType) +{ + Mutex::Autolock _l(mLock); + invalidateTracks_l(streamType); +} + status_t AudioFlinger::PlaybackThread::addEffectChain_l(const sp<EffectChain>& chain) { int session = chain->sessionId(); @@ -5371,6 +5376,13 @@ void AudioFlinger::OffloadThread::flushHw_l() } } +void AudioFlinger::OffloadThread::invalidateTracks(audio_stream_type_t streamType) +{ + Mutex::Autolock _l(mLock); + mFlushPending = true; + PlaybackThread::invalidateTracks_l(streamType); +} + // ---------------------------------------------------------------------------- AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h index 48ff77d..8fab1e4 100644 --- a/services/audioflinger/Threads.h +++ b/services/audioflinger/Threads.h @@ -617,7 +617,8 @@ public: virtual bool isValidSyncEvent(const sp<SyncEvent>& event) const; // called with AudioFlinger lock held - void invalidateTracks(audio_stream_type_t streamType); + void invalidateTracks_l(audio_stream_type_t streamType); + virtual void invalidateTracks(audio_stream_type_t streamType); virtual size_t frameCount() const { return mNormalFrameCount; } @@ -1000,6 +1001,7 @@ protected: virtual bool waitingAsyncCallback(); virtual bool waitingAsyncCallback_l(); + virtual void invalidateTracks(audio_stream_type_t streamType); private: size_t mPausedWriteLength; // length in bytes of write interrupted by pause |