summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorzunkyu.lee <zunkyu.lee@lge.com>2014-12-09 23:22:09 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-09 23:22:09 +0000
commit6c99106a19e955a1d21d26a83e35725939da5d8c (patch)
tree6ec1eac27042052c1e958e16a8549afea17d6d1c /media
parentdd6d93e245d53519465e6c050c57e5f0ea179e27 (diff)
parent9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0 (diff)
downloadframeworks_av-6c99106a19e955a1d21d26a83e35725939da5d8c.zip
frameworks_av-6c99106a19e955a1d21d26a83e35725939da5d8c.tar.gz
frameworks_av-6c99106a19e955a1d21d26a83e35725939da5d8c.tar.bz2
am 9574b644: am c1b0d49c: am 82a69ea8: Prevent ANR when AudioTrack is paused or re-routed
* commit '9574b6440b47a2c79fcfdf54a7ec3dd24dd88ef0': 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 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);
}