Merge "Fix deadlock in MediaSessionService during getCurrentUser()"

This commit is contained in:
Jae Seo
2016-07-06 07:15:54 +00:00
committed by Gerrit Code Review

View File

@@ -227,8 +227,8 @@ public class MediaSessionService extends SystemService implements Monitor {
} }
private void updateUser() { private void updateUser() {
int userId = ActivityManager.getCurrentUser();
synchronized (mLock) { synchronized (mLock) {
int userId = ActivityManager.getCurrentUser();
if (mCurrentUserId != userId) { if (mCurrentUserId != userId) {
final int oldUserId = mCurrentUserId; final int oldUserId = mCurrentUserId;
mCurrentUserId = userId; // do this first mCurrentUserId = userId; // do this first
@@ -764,7 +764,7 @@ public class MediaSessionService extends SystemService implements Monitor {
synchronized (mLock) { synchronized (mLock) {
// If we don't have a media button receiver to fall back on // If we don't have a media button receiver to fall back on
// include non-playing sessions for dispatching // include non-playing sessions for dispatching
UserRecord ur = mUserRecords.get(ActivityManager.getCurrentUser()); UserRecord ur = mUserRecords.get(mCurrentUserId);
boolean useNotPlayingSessions = (ur == null) || boolean useNotPlayingSessions = (ur == null) ||
(ur.mLastMediaButtonReceiver == null (ur.mLastMediaButtonReceiver == null
&& ur.mRestoredMediaButtonReceiver == null); && ur.mRestoredMediaButtonReceiver == null);
@@ -957,8 +957,7 @@ public class MediaSessionService extends SystemService implements Monitor {
mKeyEventReceiver); mKeyEventReceiver);
} else { } else {
// Launch the last PendingIntent we had with priority // Launch the last PendingIntent we had with priority
int userId = ActivityManager.getCurrentUser(); UserRecord user = mUserRecords.get(mCurrentUserId);
UserRecord user = mUserRecords.get(userId);
if (user.mLastMediaButtonReceiver != null if (user.mLastMediaButtonReceiver != null
|| user.mRestoredMediaButtonReceiver != null) { || user.mRestoredMediaButtonReceiver != null) {
if (DEBUG) { if (DEBUG) {
@@ -979,7 +978,7 @@ public class MediaSessionService extends SystemService implements Monitor {
} else { } else {
mediaButtonIntent.setComponent(user.mRestoredMediaButtonReceiver); mediaButtonIntent.setComponent(user.mRestoredMediaButtonReceiver);
getContext().sendBroadcastAsUser(mediaButtonIntent, getContext().sendBroadcastAsUser(mediaButtonIntent,
new UserHandle(userId)); new UserHandle(mCurrentUserId));
} }
} catch (CanceledException e) { } catch (CanceledException e) {
Log.i(TAG, "Error sending key event to media button receiver " Log.i(TAG, "Error sending key event to media button receiver "