Fix for the occasional prepareDrm/releaseDrm deadlock
Bug: 36023772
Test: Manual through GTS tests
Change-Id: Id2e8e5390231aa27e8f9a66613c2be6ce86e23a0
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
index 3b2a8a1..19c4d85 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
@@ -49,6 +49,7 @@
mSeekInProgress(false),
mPlayingTimeUs(0),
mLooper(new ALooper),
+ mPlayer(new NuPlayer(pid)),
mPlayerFlags(0),
mAnalyticsItem(NULL),
mAtEOS(false),
@@ -66,7 +67,6 @@
true, /* canCallJava */
PRIORITY_AUDIO);
- mPlayer = new NuPlayer(pid);
mLooper->registerHandler(mPlayer);
mPlayer->setDriver(this);
@@ -998,8 +998,6 @@
{
ALOGV("prepareDrm(%p) state: %d", this, mState);
- Mutex::Autolock autoLock(mLock);
-
// leaving the state verification for mediaplayer.cpp
status_t ret = mPlayer->prepareDrm(uuid, drmSessionId);
@@ -1012,8 +1010,6 @@
{
ALOGV("releaseDrm(%p) state: %d", this, mState);
- Mutex::Autolock autoLock(mLock);
-
// leaving the state verification for mediaplayer.cpp
status_t ret = mPlayer->releaseDrm();
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
index 972a348..082f71a 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h
@@ -127,7 +127,7 @@
// <<<
sp<ALooper> mLooper;
- sp<NuPlayer> mPlayer;
+ const sp<NuPlayer> mPlayer;
sp<AudioSink> mAudioSink;
uint32_t mPlayerFlags;