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

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

Merge "Remove starting window on the corresponding task organizer." into udc-qpr-dev

parents 3bb5367c 1b4d218d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2703,7 +2703,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A

    private void requestCopySplashScreen() {
        mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_COPYING;
        if (!mAtmService.mTaskOrganizerController.copySplashScreenView(getTask())) {
        if (mStartingSurface == null || !mAtmService.mTaskOrganizerController.copySplashScreenView(
                getTask(), mStartingSurface.mTaskOrganizer)) {
            mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_FINISH;
            removeStartingWindow();
        }
@@ -2771,7 +2772,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                && (mTransferringSplashScreenState == TRANSFER_SPLASH_SCREEN_FINISH
                || mTransferringSplashScreenState == TRANSFER_SPLASH_SCREEN_IDLE)) {
            ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Cleaning splash screen token=%s", this);
            mAtmService.mTaskOrganizerController.onAppSplashScreenViewRemoved(getTask());
            mAtmService.mTaskOrganizerController.onAppSplashScreenViewRemoved(getTask(),
                    mStartingSurface != null ? mStartingSurface.mTaskOrganizer : null);
        }
    }

+18 −9
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.compat.annotation.EnabledSince;
import android.content.pm.ApplicationInfo;
import android.os.UserHandle;
import android.util.Slog;
import android.window.ITaskOrganizer;
import android.window.SplashScreenView;
import android.window.TaskSnapshot;

@@ -79,12 +80,13 @@ public class StartingSurfaceController {
    }

    StartingSurface createSplashScreenStartingSurface(ActivityRecord activity, int theme) {

        synchronized (mService.mGlobalLock) {
            final Task task = activity.getTask();
            if (task != null && mService.mAtmService.mTaskOrganizerController.addStartingWindow(
                    task, activity, theme, null /* taskSnapshot */)) {
                return new StartingSurface(task);
            final TaskOrganizerController controller =
                    mService.mAtmService.mTaskOrganizerController;
            if (task != null && controller.addStartingWindow(task, activity, theme,
                    null /* taskSnapshot */)) {
                return new StartingSurface(task, controller.getTaskOrganizer());
            }
        }
        return null;
@@ -166,9 +168,12 @@ public class StartingSurfaceController {
                activity.mDisplayContent.handleTopActivityLaunchingInDifferentOrientation(
                        activity, false /* checkOpening */);
            }
                mService.mAtmService.mTaskOrganizerController.addStartingWindow(task,
                        activity, 0 /* launchTheme */, taskSnapshot);
            return new StartingSurface(task);
            final TaskOrganizerController controller =
                    mService.mAtmService.mTaskOrganizerController;
            if (controller.addStartingWindow(task, activity, 0 /* launchTheme */, taskSnapshot)) {
                return new StartingSurface(task, controller.getTaskOrganizer());
            }
            return null;
        }
    }

@@ -256,9 +261,12 @@ public class StartingSurfaceController {

    final class StartingSurface {
        private final Task mTask;
        // The task organizer which hold the client side reference of this surface.
        final ITaskOrganizer mTaskOrganizer;

        StartingSurface(Task task) {
        StartingSurface(Task task, ITaskOrganizer taskOrganizer) {
            mTask = task;
            mTaskOrganizer = taskOrganizer;
        }

        /**
@@ -268,7 +276,8 @@ public class StartingSurfaceController {
         */
        public void remove(boolean animate) {
            synchronized (mService.mGlobalLock) {
                mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask, animate);
                mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask,
                        mTaskOrganizer, animate);
            }
        }
    }
+9 −7
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        if (rootTask == null || activity.mStartingData == null) {
            return false;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = getTaskOrganizer();
        if (lastOrganizer == null) {
            return false;
        }
@@ -672,12 +672,13 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        return true;
    }

    void removeStartingWindow(Task task, boolean prepareAnimation) {
    void removeStartingWindow(Task task, ITaskOrganizer taskOrganizer, boolean prepareAnimation) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = taskOrganizer != null ? taskOrganizer
                : getTaskOrganizer();
        if (lastOrganizer == null) {
            return;
        }
@@ -771,12 +772,13 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        }
    }

    boolean copySplashScreenView(Task task) {
    boolean copySplashScreenView(Task task, ITaskOrganizer taskOrganizer) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return false;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = taskOrganizer != null ? taskOrganizer
                : getTaskOrganizer();
        if (lastOrganizer == null) {
            return false;
        }
@@ -799,12 +801,12 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
     * @see com.android.wm.shell.ShellTaskOrganizer#onAppSplashScreenViewRemoved(int)
     * @see SplashScreenView#remove()
     */
    public void onAppSplashScreenViewRemoved(Task task) {
    public void onAppSplashScreenViewRemoved(Task task, ITaskOrganizer organizer) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = organizer != null ? organizer : getTaskOrganizer();
        if (lastOrganizer == null) {
            return;
        }