diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java index 0798a910c8608..78d2e423a914f 100644 --- a/services/core/java/com/android/server/wm/AppTransitionController.java +++ b/services/core/java/com/android/server/wm/AppTransitionController.java @@ -713,7 +713,11 @@ public class AppTransitionController { final WindowState wallpaperTarget = mWallpaperControllerLocked.getWallpaperTarget(); final boolean showWallpaper = wallpaperTarget != null - && (wallpaperTarget.mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0; + && ((wallpaperTarget.mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0 + // Update task open transition to wallpaper transition when wallpaper is visible. + // (i.e.launching app info activity from recent tasks) + || ((transit == TRANSIT_TASK_OPEN || transit == TRANSIT_TASK_TO_FRONT) + && mWallpaperControllerLocked.isWallpaperVisible())); // If wallpaper is animating or wallpaperTarget doesn't have SHOW_WALLPAPER flag set, // don't consider upgrading to wallpaper transition. final WindowState oldWallpaper = diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index da9d074eb7bc3..2000f14013b7a 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -743,8 +743,10 @@ public class RecentsAnimationController implements DeathRecipient { } boolean isWallpaperVisible(WindowState w) { - return w != null && w.mAttrs.type == TYPE_BASE_APPLICATION && w.mActivityRecord != null - && mTargetActivityRecord == w.mActivityRecord && isTargetOverWallpaper(); + return w != null && w.mAttrs.type == TYPE_BASE_APPLICATION && + ((w.mActivityRecord != null && mTargetActivityRecord == w.mActivityRecord) + || isAnimatingTask(w.getTask())) + && isTargetOverWallpaper(); } /**