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

Commit ef355db3 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

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

parents 79b3f052 e697b817
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);
        }
    }