Merge "Fix deadlock b/w ActivityManagerService and MediaSessionService"

This commit is contained in:
Treehugger Robot
2016-06-23 00:13:44 +00:00
committed by Gerrit Code Review

View File

@@ -887,6 +887,15 @@ public class MediaSessionService extends SystemService implements Monitor {
} }
return; return;
} }
// Execute mAudioService.adjustSuggestedStreamVolume() on
// handler thread of MediaSessionService.
// This will release the MediaSessionService.mLock sooner and avoid
// a potential deadlock between MediaSessionService.mLock and
// ActivityManagerService lock.
mHandler.post(new Runnable() {
@Override
public void run() {
try { try {
String packageName = getContext().getOpPackageName(); String packageName = getContext().getOpPackageName();
mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream,
@@ -894,6 +903,8 @@ public class MediaSessionService extends SystemService implements Monitor {
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Error adjusting default volume.", e); Log.e(TAG, "Error adjusting default volume.", e);
} }
}
});
} else { } else {
session.adjustVolume(direction, flags, getContext().getPackageName(), session.adjustVolume(direction, flags, getContext().getPackageName(),
UserHandle.myUserId(), true); UserHandle.myUserId(), true);