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

Commit 37f0905d authored by Chong Zhang's avatar Chong Zhang Committed by Android (Google) Code Review
Browse files

Merge "Some fixes for transition animation selection"

parents 8acd3883 ec8299ca
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -17,7 +17,9 @@
package com.android.server.wm;

import static android.app.ActivityManager.StackId;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
@@ -358,6 +360,7 @@ class AppWindowToken extends WindowToken {
                win.mWinAnimator.mAnimating = false;
            }
        }
        requestUpdateWallpaperIfNeeded();
    }

    void destroySurfaces() {
@@ -405,6 +408,9 @@ class AppWindowToken extends WindowToken {
            if (displayContent != null && !displayList.contains(displayContent)) {
                displayList.add(displayContent);
            }
            if (cleanupOnResume) {
                win.requestUpdateWallpaperIfNeeded();
            }
            win.mDestroying = false;
        }
        for (int i = 0; i < displayList.size(); i++) {
+12 −11
Original line number Diff line number Diff line
@@ -590,18 +590,9 @@ class WallpaperController {
                                "Animating wallpapers: old#" + oldI + "=" + oldW + "; new#"
                                + wallpaperTargetIndex + "=" + wallpaperTarget);

                        // Set the new target correctly.
                        if (wallpaperTarget.mAppToken != null
                                && wallpaperTarget.mAppToken.hiddenRequested) {
                            if (DEBUG_WALLPAPER_LIGHT) Slog.v(TAG,
                                    "Old wallpaper still the target.");
                            mWallpaperTarget = oldW;
                            wallpaperTarget = oldW;
                            wallpaperTargetIndex = oldI;
                        }
                        // Now set the upper and lower wallpaper targets correctly,
                        // Set the upper and lower wallpaper targets correctly,
                        // and make sure that we are positioning the wallpaper below the lower.
                        else if (wallpaperTargetIndex > oldI) {
                        if (wallpaperTargetIndex > oldI) {
                            // The new target is on top of the old one.
                            if (DEBUG_WALLPAPER_LIGHT) Slog.v(TAG,
                                    "Found target above old target.");
@@ -616,6 +607,16 @@ class WallpaperController {
                            mUpperWallpaperTarget = oldW;
                            mLowerWallpaperTarget = wallpaperTarget;
                        }

                        // If the new target is going hidden, set it back to the old target.
                        if (wallpaperTarget.mAppToken != null
                                && wallpaperTarget.mAppToken.hiddenRequested) {
                            if (DEBUG_WALLPAPER_LIGHT) Slog.v(TAG,
                                    "Old wallpaper still the target.");
                            mWallpaperTarget = oldW;
                            wallpaperTarget = oldW;
                            wallpaperTargetIndex = oldI;
                        }
                    }
                }
            }
+21 −8
Original line number Diff line number Diff line
@@ -1096,6 +1096,26 @@ class WindowSurfacePlacer {
        boolean fullscreenAnim = false;
        boolean voiceInteraction = false;

        int i;
        for (i = 0; i < appsCount; i++) {
            final AppWindowToken wtoken = mService.mOpeningApps.valueAt(i);
            // Clearing the mAnimatingExit flag before entering animation. It's set to
            // true if app window is removed, or window relayout to invisible.
            // This also affects window visibility. We need to clear it *before*
            // maybeUpdateTransitToWallpaper() as the transition selection depends on
            // wallpaper target visibility.
            wtoken.clearAnimatingFlags();

        }
        // Adjust wallpaper before we pull the lower/upper target, since pending changes
        // (like the clearAnimatingFlags() above) might affect wallpaper target result.
        final DisplayContent displayContent = mService.getDefaultDisplayContentLocked();
        if ((displayContent.pendingLayoutChanges & FINISH_LAYOUT_REDO_WALLPAPER) != 0 &&
                mWallpaperControllerLocked.adjustWallpaperWindows()) {
            mService.mLayersController.assignLayersLocked(windows);
            displayContent.layoutNeeded = true;
        }

        final WindowState lowerWallpaperTarget =
                mWallpaperControllerLocked.getLowerWallpaperTarget();
        final WindowState upperWallpaperTarget =
@@ -1112,7 +1132,6 @@ class WindowSurfacePlacer {
            upperWallpaperAppToken = upperWallpaperTarget.mAppToken;
        }

        int i;
        // Do a first pass through the tokens for two
        // things:
        // (1) Determine if both the closing and opening
@@ -1137,12 +1156,6 @@ class WindowSurfacePlacer {
                if (wtoken == lowerWallpaperAppToken || wtoken == upperWallpaperAppToken) {
                    openingAppHasWallpaper = true;
                }
                // Clearing the mAnimatingExit flag before entering animation. It's set to
                // true if app window is removed, or window relayout to invisible.
                // This also affects window visibility. We need to clear it *before*
                // maybeUpdateTransitToWallpaper() as the transition selection depends on
                // wallpaper target visibility.
                wtoken.clearAnimatingFlags();
            }

            voiceInteraction |= wtoken.voiceInteraction;
@@ -1205,7 +1218,7 @@ class WindowSurfacePlacer {

        // This has changed the visibility of windows, so perform
        // a new layout to get them all up-to-date.
        mService.getDefaultDisplayContentLocked().layoutNeeded = true;
        displayContent.layoutNeeded = true;

        // TODO(multidisplay): IMEs are only supported on the default display.
        if (windows == mService.getDefaultWindowListLocked()