diff options
author | Glenn Kasten <gkasten@google.com> | 2012-12-04 12:12:34 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-12-12 09:38:48 -0800 |
commit | 5736c35b841de56ce394b4879389f669b61425e6 (patch) | |
tree | b14624b7de512d74aab43e22b1f84fe08c29f647 /services/audioflinger/Tracks.cpp | |
parent | efc0cfb61e34c3bc688a7cbcc1ccef23922251c1 (diff) | |
download | frameworks_av-5736c35b841de56ce394b4879389f669b61425e6.zip frameworks_av-5736c35b841de56ce394b4879389f669b61425e6.tar.gz frameworks_av-5736c35b841de56ce394b4879389f669b61425e6.tar.bz2 |
Prepare for track invalidation to be done by proxy
Don't rely on control block to determine whether track has been marked
invalid. Instead, use a local flag that can't be corrupted by client.
Change-Id: I783dafe828f93c1c3d2d0e5a08105ea536436efb
Diffstat (limited to 'services/audioflinger/Tracks.cpp')
-rw-r--r-- | services/audioflinger/Tracks.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp index e8ca5ee..9b611d2 100644 --- a/services/audioflinger/Tracks.cpp +++ b/services/audioflinger/Tracks.cpp @@ -323,7 +323,8 @@ AudioFlinger::PlaybackThread::Track::Track( mFlags(flags), mFastIndex(-1), mUnderrunCount(0), - mCachedVolume(1.0) + mCachedVolume(1.0), + mIsInvalid(false) { if (mCblk != NULL) { // to avoid leaking a track name, do not allocate one unless there is an mCblk @@ -834,6 +835,14 @@ bool AudioFlinger::PlaybackThread::Track::isOut() const return true; } +void AudioFlinger::PlaybackThread::Track::invalidate() +{ + // FIXME should use proxy + android_atomic_or(CBLK_INVALID, &mCblk->flags); + mCblk->cv.signal(); + mIsInvalid = true; +} + // ---------------------------------------------------------------------------- sp<AudioFlinger::PlaybackThread::TimedTrack> |