Loading services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading Loading @@ -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); } } Loading services/core/java/com/android/server/wm/StartingSurfaceController.java +18 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; } } Loading Loading @@ -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; } /** Loading @@ -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); } } } Loading services/core/java/com/android/server/wm/TaskOrganizerController.java +9 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading Loading @@ -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; } Loading @@ -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; } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading Loading @@ -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); } } Loading
services/core/java/com/android/server/wm/StartingSurfaceController.java +18 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; } } Loading Loading @@ -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; } /** Loading @@ -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); } } } Loading
services/core/java/com/android/server/wm/TaskOrganizerController.java +9 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading Loading @@ -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; } Loading @@ -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; } Loading