Merge "Fix deadlock in MediaSessionService during getCurrentUser()"
This commit is contained in:
@@ -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 "
|
||||||
|
|||||||
Reference in New Issue
Block a user