From 2ab1e6d65390f45d41752f212b4ec7dedbbd0ab5 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Thu, 25 Jun 2020 20:10:03 -0700 Subject: [PATCH] Fixed a bug where the media entries are invisible after switching users Because the list was only cleared after notifying the listeners, their checks if we still have active players was using an old state. Bug: 158367094 Test: add media, switch users Change-Id: I524cadfd02967e7bd017ebf4cee2beb5bfaef26d --- .../src/com/android/systemui/media/MediaDataManager.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt index 5052386e65e1a..d6b6660b778cf 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt @@ -193,12 +193,15 @@ class MediaDataManager( private fun clearData() { // Called on user change. Remove all current MediaData objects and inform listeners val listenersCopy = listeners.toSet() - mediaEntries.forEach { + val keyCopy = mediaEntries.keys.toMutableList() + // Clear the list first, to make sure callbacks from listeners if we have any entries + // are up to date + mediaEntries.clear() + keyCopy.forEach { listenersCopy.forEach { listener -> - listener.onMediaDataRemoved(it.key) + listener.onMediaDataRemoved(it) } } - mediaEntries.clear() } private fun removeAllForPackage(packageName: String) {