summaryrefslogtreecommitdiff
path: root/rs/java/android/renderscript/ProgramFragmentFixedFunction.java
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2018-04-12 17:23:22 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2018-04-12 17:27:30 -0700
commitec4f10df90410fc7e3dfb7437d105edef35644c7 (patch)
treeaa8ecd713352670b84087a602e2217a1bd16d929 /rs/java/android/renderscript/ProgramFragmentFixedFunction.java
parentbd6bf7cbe80956c7950e0980b959340bbf224c1d (diff)
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: Ib41045de124683a7484184cf63577bd2412d1362
Diffstat (limited to 'rs/java/android/renderscript/ProgramFragmentFixedFunction.java')
0 files changed, 0 insertions, 0 deletions