summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-11-08 10:04:06 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-11-08 10:04:07 -0800
commit755e8e1dcf36f282b727ff22d87d3c2fac70d30a (patch)
treee0c8468a87427f51deba8d018931afb4394b3f1d /include
parent864585df53eb97c31e77b3ad7c0d89e4f9b42588 (diff)
parentd5ed6e88a9bea1879e41d7defaf1edea7c09f554 (diff)
downloadframeworks_av-755e8e1dcf36f282b727ff22d87d3c2fac70d30a.zip
frameworks_av-755e8e1dcf36f282b727ff22d87d3c2fac70d30a.tar.gz
frameworks_av-755e8e1dcf36f282b727ff22d87d3c2fac70d30a.tar.bz2
Merge "Fix call to restoreTrack_l() without lock held"
Diffstat (limited to 'include')
-rw-r--r--include/media/AudioTrack.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index 529f74e..1a19999 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -481,6 +481,7 @@ protected:
// body of AudioTrackThread::threadLoop()
bool processAudioBuffer(const sp<AudioTrackThread>& thread);
+ // caller must hold lock on mLock for all _l methods
status_t createTrack_l(audio_stream_type_t streamType,
uint32_t sampleRate,
audio_format_t format,
@@ -535,7 +536,13 @@ protected:
audio_output_flags_t mFlags;
int mSessionId;
int mAuxEffectId;
+
+ // When locking both mLock and mCblk->lock, must lock in this order to avoid deadlock:
+ // 1. mLock
+ // 2. mCblk->lock
+ // It is OK to lock only mCblk->lock.
mutable Mutex mLock;
+
status_t mRestoreStatus;
bool mIsTimed;
int mPreviousPriority; // before start()