From 3188386ff8d2059d5b27aff67ad85849c8c5d0c5 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 4 Nov 2016 15:45:30 -0700 Subject: [PATCH] Fix waitingForDrawn callback not called when adjusting for IME Test: Go into multi-window, with IME target at the top. Open IME, lock screen and immediately unlock with fingerprint. Make sure you don't end up with a unrecoverable black screen. Change-Id: I1b9dd3aab64454e2d2894f5f273b70385615c74f Fixes: 32544627 --- .../java/com/android/server/wm/DockedStackDividerController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index 6f0a43a20e8a..d62a861fdb57 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -658,6 +658,14 @@ public class DockedStackDividerController implements DimLayerUser { mDelayedImeWin = imeWin; imeWin.mWinAnimator.startDelayingAnimationStart(); } + + // If we are already waiting for something to be drawn, clear out the old one so it + // still gets executed. + // TODO: Have a real system where we can wait on different windows to be drawn with + // different callbacks. + if (mService.mWaitingForDrawnCallback != null) { + mService.mWaitingForDrawnCallback.run(); + } mService.mWaitingForDrawnCallback = () -> { mAnimationStartDelayed = false; if (mDelayedImeWin != null) { -- 2.11.0