summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/JavaClassGenerator_test.cpp
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2018-04-10 14:06:07 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2018-04-11 17:22:59 -0700
commit76e124bcd3ee2e5ba98dcbdb99965a4c133fe7e4 (patch)
tree3652aec979992b85381635ad82088b9cd8eede92 /tools/aapt2/java/JavaClassGenerator_test.cpp
parent42c686861c76f49cc5dd97335b9308224dc2cab5 (diff)
PlayerBase: fix deadlock
Source of deadlock between PlayerBase.mLock and PlaybackActivityMonitor.mPlayerLock: android.media.MediaPlayer.release() > android.media.PlayerBase.baseRelease() > synchronized (mLock) > com.android.server.audio.PlaybackActivityMonitor.releasePlayer() > synchronized(mPlayerLock) and: com.android.server.audio.PlaybackActivityMonitor.unmutePlayersForCall() > synchronized (mPlayerLock) > android.media.PlayerProxy.setVolume() > android.media.PlayerBase$IPlayerWrapper.setVolume() > android.media.PlayerBase.baseSetVolume() > synchronized (mLock) playerSetVolume() Since system_server can have its own players, the calls to AudioService from PlayerBase can be synchronous, hence the deadlock. The fix consists in never holding the lock in PlayerBase while calling into AudioService. Refactor the playstate update into a method used for start / stop / pause. Bug: 72294559 Test: see bug Change-Id: I6451aa3bf19a0365472ba007b116a9e6151ab33e
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator_test.cpp')
0 files changed, 0 insertions, 0 deletions