summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@android.com>2014-12-09 00:02:39 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-12-09 00:02:39 +0000
commit56335ae2978765e3bbc510468d4812b691545d04 (patch)
tree1419cd4063aaf8caa336009d69e9728556be8933 /media
parentf3df58c77ea506fb00e696313b0ea127dbebf02c (diff)
parenta78e10495c51d09f92db9c33d34dcc7cd7f28511 (diff)
downloadframeworks_av-56335ae2978765e3bbc510468d4812b691545d04.zip
frameworks_av-56335ae2978765e3bbc510468d4812b691545d04.tar.gz
frameworks_av-56335ae2978765e3bbc510468d4812b691545d04.tar.bz2
Merge "Prevent ANR when AudioTrack is paused or re-routed"
Diffstat (limited to 'media')
-rw-r--r--media/libmedia/AudioTrackShared.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp
index eec025e..52533f5 100644
--- a/media/libmedia/AudioTrackShared.cpp
+++ b/media/libmedia/AudioTrackShared.cpp
@@ -301,6 +301,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);
@@ -311,6 +312,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);
}