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

Commit 22b7e19b authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Prevent the decor view to be visible again after exit animation...

Merge "Prevent the decor view to be visible again after exit animation finish." into sc-dev am: ef355db3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13929088

Change-Id: I3a7899a1b484b1c072f040d253aa030d198524df
parents 36a51588 ef355db3
Loading
Loading
Loading
Loading
+11 −19
Original line number Diff line number Diff line
@@ -382,14 +382,16 @@ public class StartingSurfaceDrawer {
                    Slog.v(TAG, "Removing splash screen window for task: " + taskId);
                }
                if (record.mContentView != null) {
                    final HandleExitFinish exitFinish = new HandleExitFinish(record.mDecorView);
                    if (leash != null || playRevealAnimation) {
                        mSplashscreenContentDrawer.applyExitAnimation(record.mContentView,
                                leash, frame, record.isEarlyExit(), exitFinish);
                                leash, frame, record.isEarlyExit(),
                                () -> removeWindowInner(record.mDecorView, true));
                    } else {
                        // TODO(183004107) Always hide decorView when playRevealAnimation is enabled
                        //  from TaskOrganizerController#removeStartingWindow
                        // the SplashScreenView has been copied to client, skip default exit
                        // animation
                        exitFinish.run();
                        removeWindowInner(record.mDecorView, false);
                    }
                }
            }
@@ -403,23 +405,13 @@ public class StartingSurfaceDrawer {
        }
    }

    private static class HandleExitFinish implements Runnable {
        private View mDecorView;

        HandleExitFinish(View decorView) {
            mDecorView = decorView;
        }

        @Override
        public void run() {
            if (mDecorView == null) {
                return;
    private void removeWindowInner(View decorView, boolean hideView) {
        if (hideView) {
            decorView.setVisibility(View.GONE);
        }
            final WindowManager wm = mDecorView.getContext().getSystemService(WindowManager.class);
        final WindowManager wm = decorView.getContext().getSystemService(WindowManager.class);
        if (wm != null) {
                wm.removeView(mDecorView);
            }
            mDecorView = null;
            wm.removeView(decorView);
        }
    }