diff options
| author | 2025-02-26 10:08:49 -0800 | |
|---|---|---|
| committer | 2025-02-26 10:08:49 -0800 | |
| commit | 5149fa26bb06e3a94c315732b06945bcb4eb030e (patch) | |
| tree | 443e98babe303a8fb2cd5fb007a705d887358b8c | |
| parent | a8bc7bdcdad8226a5cbb077eb88b3c42ad8c1c72 (diff) | |
| parent | 0eb0b827cf67b8bd662d71b098f1e40a608f0eea (diff) | |
Merge "Fix shape is sometimes too small on lockscreen" into main
2 files changed, 19 insertions, 21 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt index a0bbd0acba73..45801ba3517a 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt @@ -89,7 +89,6 @@ import kotlin.math.min import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update @@ -381,17 +380,9 @@ object KeyguardRootViewBinder { if (wallpaperFocalAreaViewModel.hasFocalArea.value) { launch { wallpaperFocalAreaViewModel.wallpaperFocalAreaBounds.collect { - wallpaperFocalAreaBounds -> - wallpaperFocalAreaViewModel.setFocalAreaBounds( - wallpaperFocalAreaBounds - ) + wallpaperFocalAreaViewModel.setFocalAreaBounds(it) } } - launch { - wallpaperFocalAreaViewModel.wallpaperFocalAreaBounds - .filterNotNull() - .collect { wallpaperFocalAreaViewModel.setFocalAreaBounds(it) } - } } } } diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt index 4cd49d03ad36..1e78b12db154 100644 --- a/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt @@ -26,6 +26,7 @@ import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInter import javax.inject.Inject import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map class WallpaperFocalAreaViewModel @@ -39,25 +40,31 @@ constructor( val wallpaperFocalAreaBounds = combine( wallpaperFocalAreaInteractor.wallpaperFocalAreaBounds, + keyguardTransitionInteractor.startedKeyguardTransitionStep, + // Emit transition state when FINISHED instead of STARTED to avoid race with + // wakingup command, causing layout change command not be received. keyguardTransitionInteractor .transition( edge = Edge.create(to = Scenes.Lockscreen), edgeWithoutSceneContainer = Edge.create(to = KeyguardState.LOCKSCREEN), ) - .filter { transitionStep -> - // Should not filter by TransitionState.STARTED, it may race with - // wakingup command, causing layout change command not be received. - transitionStep.transitionState == TransitionState.FINISHED - }, - ::Pair, + .filter { it.transitionState == TransitionState.FINISHED }, + ::Triple, ) - .map { (bounds, _) -> bounds } + .map { (bounds, startedStep, _) -> + // Avoid sending wrong bounds when transitioning from LOCKSCREEN to GONE + if ( + startedStep.to == KeyguardState.LOCKSCREEN && + startedStep.from != KeyguardState.LOCKSCREEN + ) { + bounds + } else { + null + } + } + .filterNotNull() fun setFocalAreaBounds(bounds: RectF) { wallpaperFocalAreaInteractor.setFocalAreaBounds(bounds) } - - fun setTapPosition(x: Float, y: Float) { - wallpaperFocalAreaInteractor.setTapPosition(x, y) - } } |