MediaSessionService: Synchronize isGlobalPriorityActive()

Test: Manual test (Press the headset button while the phone is ringing)
Change-Id: I682d4d07a1e238892afe8b03b2b824bb40345ab8
This commit is contained in:
Jaewan Kim
2017-02-24 16:19:14 +09:00
parent e20e7ebbfb
commit 5125501099

View File

@@ -801,16 +801,17 @@ public class MediaSessionService extends SystemService implements Monitor {
+ "setup is in progress.");
return;
}
if (isGlobalPriorityActive() && uid != Process.SYSTEM_UID) {
// Prevent dispatching key event through reflection while the global priority
// session is active.
Slog.i(TAG, "Only the system can dispatch media key event "
+ "to the global priority session.");
return;
}
synchronized (mLock) {
if (!isGlobalPriorityActive() && isVoiceKey(keyEvent.getKeyCode())) {
boolean isGlobalPriorityActive = mPriorityStack.isGlobalPriorityActive();
if (isGlobalPriorityActive && uid != Process.SYSTEM_UID) {
// Prevent dispatching key event through reflection while the global
// priority session is active.
Slog.i(TAG, "Only the system can dispatch media key event "
+ "to the global priority session.");
return;
}
if (!isGlobalPriorityActive && isVoiceKey(keyEvent.getKeyCode())) {
handleVoiceKeyEventLocked(keyEvent, needWakeLock);
} else {
dispatchMediaKeyEventLocked(keyEvent, needWakeLock, true);
@@ -1080,7 +1081,9 @@ public class MediaSessionService extends SystemService implements Monitor {
@Override
public boolean isGlobalPriorityActive() {
return mPriorityStack.isGlobalPriorityActive();
synchronized (mLock) {
return mPriorityStack.isGlobalPriorityActive();
}
}
@Override