Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63410892 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Let token animation notify removing starting window

AsyncRotationController may have executed all operations then it
becomes null, but the fade-in animation can still be running.
So if the specified type is animating, let the callback which]
is set by case Operation.ACTION_TOGGLE_IME in
AsyncRotationController#finishOp to call reportImeDrawnForOrganizer.

Otherwise if it reports ime drawn too early, the snapshot starting
window will be removed before the fade-in animation is completed,
which cause flickering.

Bug: 329781040
Test: ShowImeOnAppStartWhenLaunchingAppFromFixedOrientationTest
Change-Id: I23474f6e369ef390f46d5cdd95867e8a3070dbb7
parent b3942280
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -181,8 +181,10 @@ final class ImeInsetsSourceProvider extends InsetsSourceProvider {
        }
        WindowToken imeToken = mWindowContainer.asWindowState() != null
                ? mWindowContainer.asWindowState().mToken : null;
        if (mDisplayContent.getAsyncRotationController() != null
                && mDisplayContent.getAsyncRotationController().isTargetToken(imeToken)) {
        final var rotationController = mDisplayContent.getAsyncRotationController();
        if ((rotationController != null && rotationController.isTargetToken(imeToken))
                || (imeToken != null && imeToken.isSelfAnimating(
                        0 /* flags */, SurfaceAnimator.ANIMATION_TYPE_TOKEN_TRANSFORM))) {
            // Skip reporting IME drawn state when the control target is in fixed
            // rotation, AsyncRotationController will report after the animation finished.
            return;