diff options
| author | 2019-01-17 21:53:39 +0900 | |
|---|---|---|
| committer | 2019-01-17 21:55:58 +0900 | |
| commit | f8e970a923d41dca2c7b9967c40344d25bf0edcc (patch) | |
| tree | 687ae647ae2f6d067c81f3fdd0ac277dfc4e8189 | |
| parent | 842af1ecd6d57751cde99ab402ee7e82f6003017 (diff) | |
MediaSession2: Fix controller is disconnected immediatly after connected
This is regression introduced by my previous commit
45d94a4844e9 MediaSession2Service: Initial commit
Test: Run CTS
Change-Id: Id1490e1897e502c2a6008e5ed72158d4d5cf9685
| -rw-r--r-- | media/java/android/media/MediaSession2.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/media/java/android/media/MediaSession2.java b/media/java/android/media/MediaSession2.java index dceef34596b7..04999cace5e0 100644 --- a/media/java/android/media/MediaSession2.java +++ b/media/java/android/media/MediaSession2.java @@ -239,7 +239,7 @@ public class MediaSession2 implements AutoCloseable { final ControllerInfo controllerInfo = new ControllerInfo(remoteUserInfo, mSessionManager.isTrustedForMediaControl(remoteUserInfo), controller); mCallbackExecutor.execute(() -> { - boolean accept = false; + boolean connected = false; try { if (isClosed()) { return; @@ -249,8 +249,7 @@ public class MediaSession2 implements AutoCloseable { // Don't reject connection for the request from trusted app. // Otherwise server will fail to retrieve session's information to dispatch // media keys to. - accept = controllerInfo.mAllowedCommands != null || controllerInfo.isTrusted(); - if (!accept) { + if (controllerInfo.mAllowedCommands == null && !controllerInfo.isTrusted()) { return; } if (controllerInfo.mAllowedCommands == null) { @@ -283,13 +282,18 @@ public class MediaSession2 implements AutoCloseable { return; } controllerInfo.notifyConnected(connectionResult); + connected = true; } finally { - if (!accept) { + if (!connected) { if (DEBUG) { - Log.d(TAG, "Rejecting connection, controllerInfo=" + controllerInfo); + Log.d(TAG, "Rejecting connection or notifying that session is closed" + + ", controllerInfo=" + controllerInfo); } + synchronized (mLock) { + mConnectedControllers.remove(controller); + } + controllerInfo.notifyDisconnected(); } - controllerInfo.notifyDisconnected(); } }); } |