diff options
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionRecord.java | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 994d3ca1124f..6f8a46be089f 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -786,7 +786,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -813,7 +813,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -848,7 +848,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -875,7 +875,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -902,7 +902,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -929,7 +929,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -954,7 +954,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } if (deadCallbackHolders != null) { - mControllerCallbackHolders.removeAll(deadCallbackHolders); + removeControllerHoldersSafely(deadCallbackHolders); } } @@ -979,7 +979,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR } } // After notifying clear all listeners - mControllerCallbackHolders.clear(); + removeControllerHoldersSafely(null); } private PlaybackState getStateWithUpdatedPosition() { @@ -1027,6 +1027,17 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR return -1; } + private void removeControllerHoldersSafely( + Collection<ISessionControllerCallbackHolder> holders) { + synchronized (mLock) { + if (holders == null) { + mControllerCallbackHolders.clear(); + } else { + mControllerCallbackHolders.removeAll(holders); + } + } + } + private PlaybackInfo getVolumeAttributes() { int volumeType; AudioAttributes attributes; |