From c7c2e8d7e6ec9b3bd2e5c42e823e2734877cabd1 Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Tue, 27 Sep 2022 22:00:00 +0000 Subject: [PATCH] Avoid syncing voice interaction background window for skipAnim=true. Test: Manual Fix: 236924161 Change-Id: Iaf95221678d36f9b5782fd8c4bda626b946565a9 --- .../VoiceInteractionWindowController.kt | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt index 81acda3d75..076900cd39 100644 --- a/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt @@ -77,7 +77,7 @@ class VoiceInteractionWindowController(val context: TaskbarActivityContext) fadeStashedHandle.end() } - moveTaskbarBackgroundToAppropriateLayer() + moveTaskbarBackgroundToAppropriateLayer(skipAnim) } /** @@ -86,24 +86,28 @@ class VoiceInteractionWindowController(val context: TaskbarActivityContext) * OR * Removes the temporary window and show the TaskbarDragLayer background again. */ - private fun moveTaskbarBackgroundToAppropriateLayer() { + private fun moveTaskbarBackgroundToAppropriateLayer(skipAnim: Boolean) { val taskbarBackgroundOverride = controllers.taskbarDragLayerController .overrideBackgroundAlpha val moveToLowerLayer = isVoiceInteractionWindowVisible - if (moveToLowerLayer) { + val onWindowsSynchronized = if (moveToLowerLayer) { // First add the temporary window, then hide the overlapping taskbar background. - context.addWindowView(separateWindowForTaskbarBackground, separateWindowLayoutParams) - ViewRootSync.synchronizeNextDraw(separateWindowForTaskbarBackground, context.dragLayer - ) { - taskbarBackgroundOverride.updateValue(0f) - } + context.addWindowView(separateWindowForTaskbarBackground, separateWindowLayoutParams); + { taskbarBackgroundOverride.updateValue(0f) } } else { // First reapply the original taskbar background, then remove the temporary window. - taskbarBackgroundOverride.updateValue(1f) - ViewRootSync.synchronizeNextDraw(separateWindowForTaskbarBackground, context.dragLayer - ) { - context.removeWindowView(separateWindowForTaskbarBackground) - } + taskbarBackgroundOverride.updateValue(1f); + { context.removeWindowView(separateWindowForTaskbarBackground) } + } + + if (skipAnim) { + onWindowsSynchronized() + } else { + ViewRootSync.synchronizeNextDraw( + separateWindowForTaskbarBackground, + context.dragLayer, + onWindowsSynchronized + ) } }