diff options
author | Erik Wolsheimer <ewol@google.com> | 2015-10-30 12:07:52 -0700 |
---|---|---|
committer | Erik Wolsheimer <ewol@google.com> | 2015-10-30 12:07:52 -0700 |
commit | 7845a1f0790a1de9e26e99578f6ce3219cf8efc3 (patch) | |
tree | 1d9f0f145f690b31b03cbeacfdcbfbab0c6c3481 /media/libmediaplayerservice | |
parent | 06195062e6b65b342b70cb1299ff278340eba9ff (diff) | |
download | frameworks_av-7845a1f0790a1de9e26e99578f6ce3219cf8efc3.zip frameworks_av-7845a1f0790a1de9e26e99578f6ce3219cf8efc3.tar.gz frameworks_av-7845a1f0790a1de9e26e99578f6ce3219cf8efc3.tar.bz2 |
fix deadlock in MediaPlayerService
BUG: 25263909
Change-Id: I3f08c02a851b67ab269e9aef7b2fb17eda09ea5d
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index bcfd83a..f0baf69 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -1894,8 +1894,13 @@ void MediaPlayerService::AudioOutput::pause() void MediaPlayerService::AudioOutput::close() { ALOGV("close"); - Mutex::Autolock lock(mLock); - close_l(); + sp<AudioTrack> track; + { + Mutex::Autolock lock(mLock); + track = mTrack; + close_l(); // clears mTrack + } + // destruction of the track occurs outside of mutex. } void MediaPlayerService::AudioOutput::setVolume(float left, float right) |