Refresh state when updating seekbar visibility
The issue was not with the comparison algorithm. It seems we used to
rely on media notification updates to update seekbar visibility. We need
to refresh the state to get an immediate update on seekbar to show.
Flag: EXEMPT bugfix
Fixes: 373533563
Test: Checked UI.
Change-Id: I997454739600aad9cfd46c8767fbd641025233c3
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
index dccf61d..2bf6a10 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
@@ -435,6 +435,12 @@
}
this.mIsSeekBarEnabled = isSeekBarEnabled;
updateSeekBarVisibility();
+ mMainExecutor.execute(() -> {
+ if (!mMetadataAnimationHandler.isRunning()) {
+ // Trigger a state refresh so that we immediately update visibilities.
+ mMediaViewController.refreshState();
+ }
+ });
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
index 975f8f4..c00e14c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
@@ -225,6 +225,12 @@
if (isSeekBarEnabled == enabled) return
isSeekBarEnabled = enabled
MediaControlViewBinder.updateSeekBarVisibility(expandedLayout, isSeekBarEnabled)
+ mainExecutor.execute {
+ if (!metadataAnimationHandler.isRunning) {
+ // Trigger a state refresh so that we immediately update visibilities.
+ refreshState()
+ }
+ }
}
}
@@ -899,7 +905,11 @@
// If the view isn't bound, we can drop the animation, otherwise we'll execute it
animateNextStateChange = false
if (transitionLayout == null) {
- logger.logMediaLocation("setCurrentState: view not bound", startLocation, endLocation)
+ logger.logMediaLocation(
+ "setCurrentState: view not bound",
+ startLocation,
+ endLocation,
+ )
return
}