diff options
author | Dhananjay Kumar <dhakumar@codeaurora.org> | 2016-02-25 13:48:33 +0530 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-04-13 13:54:55 -0700 |
commit | 7262eae1402f3256606ad1776e35c4a08ed267c3 (patch) | |
tree | 4af7bf3d022ccdd286c638348f188081b7846f08 /media/libmediaplayerservice/nuplayer/NuPlayer.cpp | |
parent | 3fe0fe6a389cfd63fac0c8e32f31001d3d95bd83 (diff) | |
download | frameworks_av-7262eae1402f3256606ad1776e35c4a08ed267c3.zip frameworks_av-7262eae1402f3256606ad1776e35c4a08ed267c3.tar.gz frameworks_av-7262eae1402f3256606ad1776e35c4a08ed267c3.tar.bz2 |
nuplayer: ignore openAudioSink while waiting for teardown completion
- AudioSink is reopened on AudioTearDown event as well as on
decoder output format change. These events are from different
contexts, independent of each other and can occur concurrently,
doing set of thread-unsafe operations on audioSink, which
sometimes may result in fatal error.
- Any request to openSink, after teardown event is received but
before its completed, is redundant since once teardown is
completed sink is anyway going to be opened again. Also
ignoring sink reopen while in teardown would avoid concurrent
processing of thread-unsafe operations on audioSink.
- Update nuplayer to prevent reopening of sink while teardown is
still going on.
CRs-Fixed: 978013
Change-Id: Ieb3825f133c2099e07d6e92ef101dd5156af8a20
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayer.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 1835101..2ffd184 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -1157,6 +1157,7 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { mRenderer->flush( false /* audio */, false /* notifyComplete */); } + mRenderer->signalAudioTearDownComplete(); int64_t positionUs; if (!msg->findInt64("positionUs", &positionUs)) { |