From 377b939814f7251023ea8c7f925ef5d272255475 Mon Sep 17 00:00:00 2001 From: Hawkwood Glazier Date: Sat, 14 May 2022 21:51:34 +0000 Subject: [PATCH] Changing the system theme no longer causes a UMO flicker Recreating the UMO causes a visual flicker. Since the theme can be changed from a quick setting, this flicker may occur while it is onscreen. The UMO now uses it's own colors and does not need to be recreated for theme changes. Test: Manual Fixes: 232295658 Fixes: 204414378 Change-Id: Ifcdb95e7b783cfe8634c8280ac1aa13f193e04bd --- .../systemui/media/MediaCarouselController.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt index 0f8687183e94a..cf8cbcf052c24 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt @@ -150,12 +150,13 @@ class MediaCarouselController @Inject constructor( } private val configListener = object : ConfigurationController.ConfigurationListener { override fun onDensityOrFontScaleChanged() { - recreatePlayers() + // System font changes should only happen when UMO is offscreen or a flicker may occur + updatePlayers(recreateMedia = true) inflateSettingsButton() } override fun onThemeChanged() { - recreatePlayers() + updatePlayers(recreateMedia = false) inflateSettingsButton() } @@ -165,7 +166,7 @@ class MediaCarouselController @Inject constructor( } override fun onUiModeChanged() { - recreatePlayers() + updatePlayers(recreateMedia = false) inflateSettingsButton() } } @@ -539,7 +540,7 @@ class MediaCarouselController @Inject constructor( } } - private fun recreatePlayers() { + private fun updatePlayers(recreateMedia: Boolean) { pageIndicator.tintList = ColorStateList.valueOf( context.getColor(R.color.media_paging_indicator) ) @@ -554,7 +555,9 @@ class MediaCarouselController @Inject constructor( } } else { val isSsReactivated = MediaPlayerData.isSsReactivated(key) - removePlayer(key, dismissMediaData = false, dismissRecommendation = false) + if (recreateMedia) { + removePlayer(key, dismissMediaData = false, dismissRecommendation = false) + } addOrUpdatePlayer( key = key, oldKey = null, data = data, isSsReactivated = isSsReactivated) }