Loading core/java/android/app/ActivityThread.java +1 −0 Original line number Diff line number Diff line Loading @@ -4771,6 +4771,7 @@ public final class ActivityThread extends ClientTransactionHandler // frame. final SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.hide(startingWindowLeash); startingWindowLeash.release(); view.syncTransferSurfaceOnDraw(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java +9 −5 Original line number Diff line number Diff line Loading @@ -368,8 +368,12 @@ class SplashscreenWindowCreator extends AbsSplashWindowCreator { mStartingWindowRecordManager.addRecord(taskId, tView); } private void removeWindowInner(@NonNull View decorView, boolean hideView) { private void removeWindowInner(@NonNull View decorView, StartingWindowRemovalInfo info, boolean hideView) { requestTopUi(false); if (info.windowAnimationLeash != null && info.windowAnimationLeash.isValid()) { info.windowAnimationLeash.release(); } if (decorView.getParent() == null) { Slog.w(TAG, "This root view has no parent, never been added to a ViewRootImpl?"); return; Loading Loading @@ -452,22 +456,22 @@ class SplashscreenWindowCreator extends AbsSplashWindowCreator { if (mSplashView == null) { // shouldn't happen, the app window may be drawn earlier than starting window? Slog.e(TAG, "Found empty splash screen, remove!"); removeWindowInner(mRootView, false); removeWindowInner(mRootView, info, false); return true; } if (immediately || mSuggestType == STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN) { removeWindowInner(mRootView, false); removeWindowInner(mRootView, info, false); } else { if (info.playRevealAnimation) { mSplashscreenContentDrawer.applyExitAnimation(mSplashView, info.windowAnimationLeash, info.mainFrame, () -> removeWindowInner(mRootView, true), () -> removeWindowInner(mRootView, info, true), mCreateTime, info.roundedCornerRadius); } else { // the SplashScreenView has been copied to client, hide the view to skip // default exit animation removeWindowInner(mRootView, true); removeWindowInner(mRootView, info, true); } } return true; Loading Loading
core/java/android/app/ActivityThread.java +1 −0 Original line number Diff line number Diff line Loading @@ -4771,6 +4771,7 @@ public final class ActivityThread extends ClientTransactionHandler // frame. final SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.hide(startingWindowLeash); startingWindowLeash.release(); view.syncTransferSurfaceOnDraw(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java +9 −5 Original line number Diff line number Diff line Loading @@ -368,8 +368,12 @@ class SplashscreenWindowCreator extends AbsSplashWindowCreator { mStartingWindowRecordManager.addRecord(taskId, tView); } private void removeWindowInner(@NonNull View decorView, boolean hideView) { private void removeWindowInner(@NonNull View decorView, StartingWindowRemovalInfo info, boolean hideView) { requestTopUi(false); if (info.windowAnimationLeash != null && info.windowAnimationLeash.isValid()) { info.windowAnimationLeash.release(); } if (decorView.getParent() == null) { Slog.w(TAG, "This root view has no parent, never been added to a ViewRootImpl?"); return; Loading Loading @@ -452,22 +456,22 @@ class SplashscreenWindowCreator extends AbsSplashWindowCreator { if (mSplashView == null) { // shouldn't happen, the app window may be drawn earlier than starting window? Slog.e(TAG, "Found empty splash screen, remove!"); removeWindowInner(mRootView, false); removeWindowInner(mRootView, info, false); return true; } if (immediately || mSuggestType == STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN) { removeWindowInner(mRootView, false); removeWindowInner(mRootView, info, false); } else { if (info.playRevealAnimation) { mSplashscreenContentDrawer.applyExitAnimation(mSplashView, info.windowAnimationLeash, info.mainFrame, () -> removeWindowInner(mRootView, true), () -> removeWindowInner(mRootView, info, true), mCreateTime, info.roundedCornerRadius); } else { // the SplashScreenView has been copied to client, hide the view to skip // default exit animation removeWindowInner(mRootView, true); removeWindowInner(mRootView, info, true); } } return true; Loading