diff options
author | zunkyu.lee <zunkyu.lee@lge.com> | 2014-12-09 00:53:10 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-09 00:53:10 +0000 |
commit | 9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0 (patch) | |
tree | 942be36dd935a1f88734db7a5bcb10724ba9cc40 /media | |
parent | 3ca2794ed49b683ea2a8239b2eea301483ec196b (diff) | |
parent | c1b0d49cacde26c2420528169d157d2c778a9b0d (diff) | |
download | frameworks_av-9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0.zip frameworks_av-9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0.tar.gz frameworks_av-9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0.tar.bz2 |
am c1b0d49c: am 82a69ea8: Prevent ANR when AudioTrack is paused or re-routed
* commit 'c1b0d49cacde26c2420528169d157d2c778a9b0d':
Prevent ANR when AudioTrack is paused or re-routed
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/AudioTrackShared.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp index 4a783b3..ff24475 100644 --- a/media/libmedia/AudioTrackShared.cpp +++ b/media/libmedia/AudioTrackShared.cpp @@ -307,6 +307,7 @@ void ClientProxy::binderDied() { audio_track_cblk_t* cblk = mCblk; if (!(android_atomic_or(CBLK_INVALID, &cblk->mFlags) & CBLK_INVALID)) { + android_atomic_or(CBLK_FUTEX_WAKE, &cblk->mFutex); // it seems that a FUTEX_WAKE_PRIVATE will not wake a FUTEX_WAIT, even within same process (void) syscall(__NR_futex, &cblk->mFutex, mClientInServer ? FUTEX_WAKE_PRIVATE : FUTEX_WAKE, 1); @@ -317,6 +318,7 @@ void ClientProxy::interrupt() { audio_track_cblk_t* cblk = mCblk; if (!(android_atomic_or(CBLK_INTERRUPT, &cblk->mFlags) & CBLK_INTERRUPT)) { + android_atomic_or(CBLK_FUTEX_WAKE, &cblk->mFutex); (void) syscall(__NR_futex, &cblk->mFutex, mClientInServer ? FUTEX_WAKE_PRIVATE : FUTEX_WAKE, 1); } |