summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/PlaybackTracks.h
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-12-04 12:12:34 -0800
committerGlenn Kasten <gkasten@google.com>2012-12-12 09:38:48 -0800
commit5736c35b841de56ce394b4879389f669b61425e6 (patch)
treeb14624b7de512d74aab43e22b1f84fe08c29f647 /services/audioflinger/PlaybackTracks.h
parentefc0cfb61e34c3bc688a7cbcc1ccef23922251c1 (diff)
downloadframeworks_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/PlaybackTracks.h')
-rw-r--r--services/audioflinger/PlaybackTracks.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 37e39a0..aaa5333 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -103,6 +103,8 @@ protected:
public:
void triggerEvents(AudioSystem::sync_event_t type);
+ void invalidate();
+ bool isInvalid() const { return mIsInvalid; }
virtual bool isTimedTrack() const { return false; }
bool isFastTrack() const { return (mFlags & IAudioFlinger::TRACK_FAST) != 0; }
virtual bool isOut() const;
@@ -143,6 +145,7 @@ private:
volatile float mCachedVolume; // combined master volume and stream type volume;
// 'volatile' means accessed without lock or
// barrier, but is read/written atomically
+ bool mIsInvalid; // non-resettable latch, set by invalidate()
}; // end of Track
class TimedTrack : public Track {