Fix transition after restarting inactive media
The previousLocation was updated when it shouldn't have been, which resulted in the animation always thinking it was going from QS to QS in the first transition after restarting media. To fix this: 1. Only update the previous location when it has changed (how it worked before the forceStateUpdate parameter was added) 2. When forceStateUpdate is true, check where the next animation ought to be and update if necessary Test: swipe away small player, restart from QS, swipe back to QQS Fixes: 192384088 Change-Id: Ib44e9bd9087549d60f09f90c09ad1f2e0da82069
This commit is contained in:
@@ -537,8 +537,19 @@ class MediaHierarchyManager @Inject constructor(
|
||||
) {
|
||||
val desiredLocation = calculateLocation()
|
||||
if (desiredLocation != this.desiredLocation || forceStateUpdate) {
|
||||
if (this.desiredLocation >= 0) {
|
||||
if (this.desiredLocation >= 0 && desiredLocation != this.desiredLocation) {
|
||||
// Only update previous location when it actually changes
|
||||
previousLocation = this.desiredLocation
|
||||
} else if (forceStateUpdate) {
|
||||
val onLockscreen = (!bypassController.bypassEnabled &&
|
||||
(statusbarState == StatusBarState.KEYGUARD ||
|
||||
statusbarState == StatusBarState.FULLSCREEN_USER_SWITCHER))
|
||||
if (desiredLocation == LOCATION_QS && previousLocation == LOCATION_LOCKSCREEN &&
|
||||
!onLockscreen) {
|
||||
// If media active state changed and the device is now unlocked, update the
|
||||
// previous location so we animate between the correct hosts
|
||||
previousLocation = LOCATION_QQS
|
||||
}
|
||||
}
|
||||
val isNewView = this.desiredLocation == -1
|
||||
this.desiredLocation = desiredLocation
|
||||
|
||||
Reference in New Issue
Block a user