Loading data/etc/services.core.protolog.json +0 −30 Original line number Diff line number Diff line Loading @@ -79,24 +79,12 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "1789854065584848502": { "message": "startingData was nulled out before handling mAddStartingWindow: %s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "5659016061937922595": { "message": "Add starting %s: startingData=%s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "-9066702108316454290": { "message": "Aborted starting %s: startingData=%s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "7506106334102501360": { "message": "Added starting %s: startingWindow=%s startingView=%s", "level": "VERBOSE", Loading Loading @@ -1123,12 +1111,6 @@ "group": "WM_SHOW_SURFACE_ALLOC", "at": "com\/android\/server\/wm\/BlackFrame.java" }, "5256889109971284149": { "message": "CameraManager cannot be found.", "level": "ERROR", "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/CameraStateMonitor.java" }, "8116030277393789125": { "message": "Display id=%d is notified that Camera %s is open for package %s", "level": "VERBOSE", Loading Loading @@ -4189,18 +4171,6 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-707915937966769475": { "message": "unable to update pointer icon", "level": "WARN", "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-8663841671650918687": { "message": "unable to restore pointer icon", "level": "WARN", "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-6186782212018913664": { "message": "Invalid displayId for requestScrollCapture: %d", "level": "ERROR", Loading services/core/java/com/android/server/wm/ActivityRecord.java +11 −60 Original line number Diff line number Diff line Loading @@ -2639,69 +2639,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } void scheduleAddStartingWindow() { mAddStartingWindow.run(); } private class AddStartingWindow implements Runnable { @Override public void run() { // Can be accessed without holding the global lock final StartingData startingData; synchronized (mWmService.mGlobalLock) { // There can only be one adding request, silly caller! if (mStartingData == null) { // Animation has been canceled... do nothing. ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingData was nulled out before handling" + " mAddStartingWindow: %s", ActivityRecord.this); return; } startingData = mStartingData; } private void scheduleAddStartingWindow() { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Add starting %s: startingData=%s", this, startingData); StartingSurfaceController.StartingSurface surface = null; try { surface = startingData.createStartingSurface(ActivityRecord.this); } catch (Exception e) { Slog.w(TAG, "Exception when adding starting window", e); } if (surface != null) { boolean abort = false; synchronized (mWmService.mGlobalLock) { // If the window was successfully added, then we need to remove it. if (mStartingData == null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Aborted starting %s: startingData=%s", ActivityRecord.this, mStartingData); this, mStartingData); mStartingWindow = null; mStartingData = null; abort = true; } else { mStartingSurface = surface; } if (!abort) { mStartingSurface = mStartingData.createStartingSurface(ActivityRecord.this); if (mStartingSurface != null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Added starting %s: startingWindow=%s startingView=%s", ActivityRecord.this, mStartingWindow, mStartingSurface); } } if (abort) { surface.remove(false /* prepareAnimation */, false /* hasImeSurface */); } } else { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Surface returned was null: %s", ActivityRecord.this); } } } private final AddStartingWindow mAddStartingWindow = new AddStartingWindow(); private int getStartingWindowType(boolean newTask, boolean taskSwitch, boolean processRunning, boolean allowTaskSnapshot, boolean activityCreated, boolean activityAllDrawn, Loading services/core/java/com/android/server/wm/StartingData.java +1 −2 Original line number Diff line number Diff line Loading @@ -90,8 +90,7 @@ public abstract class StartingData { } /** * Creates the actual starting window surface. DO NOT HOLD THE WINDOW MANAGER LOCK WHEN CALLING * THIS METHOD. * Creates the actual starting window surface. * * @param activity the app to add the starting window to * @return a class implementing {@link StartingSurface} for easy removal with Loading services/core/java/com/android/server/wm/StartingSurfaceController.java +36 −42 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ public class StartingSurfaceController { } StartingSurface createSplashScreenStartingSurface(ActivityRecord activity, int theme) { synchronized (mService.mGlobalLock) { final Task task = activity.getTask(); final TaskOrganizerController controller = mService.mAtmService.mTaskOrganizerController; Loading @@ -89,7 +88,6 @@ public class StartingSurfaceController { null /* taskSnapshot */)) { return new StartingSurface(task, controller.getTaskOrganizer()); } } return null; } Loading Loading @@ -143,16 +141,13 @@ public class StartingSurfaceController { StartingSurface createTaskSnapshotSurface(ActivityRecord activity, TaskSnapshot taskSnapshot) { final WindowState topFullscreenOpaqueWindow; final Task task; synchronized (mService.mGlobalLock) { task = activity.getTask(); final Task task = activity.getTask(); if (task == null) { Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find task for activity=" + activity); return null; } final ActivityRecord topFullscreenActivity = activity.getTask().getTopFullscreenActivity(); final ActivityRecord topFullscreenActivity = task.getTopFullscreenActivity(); if (topFullscreenActivity == null) { Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find top fullscreen for task=" + task); Loading @@ -179,7 +174,6 @@ public class StartingSurfaceController { } return null; } } private static final class DeferringStartingWindowRecord { final ActivityRecord mDeferring; Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +0 −18 Original line number Diff line number Diff line Loading @@ -2804,24 +2804,6 @@ public class ActivityRecordTests extends WindowTestsBase { assertHasStartingWindow(activity2); } @Test public void testTransferStartingWindowWhileCreating() { final TestStartingWindowOrganizer organizer = registerTestStartingWindowOrganizer(); final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true).build(); final ActivityRecord activity2 = new ActivityBuilder(mAtm).setCreateTask(true).build(); organizer.setRunnableWhenAddingSplashScreen( () -> { // Surprise, ...! Transfer window in the middle of the creation flow. activity2.addStartingWindow(mPackageName, android.R.style.Theme, activity1, true, true, false, true, false, false, false); }); activity1.addStartingWindow(mPackageName, android.R.style.Theme, null, true, true, false, true, false, false, false); waitUntilHandlersIdle(); assertNoStartingWindow(activity1); assertHasStartingWindow(activity2); } @Test public void testTransferStartingWindowCanAnimate() { registerTestStartingWindowOrganizer(); Loading Loading
data/etc/services.core.protolog.json +0 −30 Original line number Diff line number Diff line Loading @@ -79,24 +79,12 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "1789854065584848502": { "message": "startingData was nulled out before handling mAddStartingWindow: %s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "5659016061937922595": { "message": "Add starting %s: startingData=%s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "-9066702108316454290": { "message": "Aborted starting %s: startingData=%s", "level": "VERBOSE", "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, "7506106334102501360": { "message": "Added starting %s: startingWindow=%s startingView=%s", "level": "VERBOSE", Loading Loading @@ -1123,12 +1111,6 @@ "group": "WM_SHOW_SURFACE_ALLOC", "at": "com\/android\/server\/wm\/BlackFrame.java" }, "5256889109971284149": { "message": "CameraManager cannot be found.", "level": "ERROR", "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/CameraStateMonitor.java" }, "8116030277393789125": { "message": "Display id=%d is notified that Camera %s is open for package %s", "level": "VERBOSE", Loading Loading @@ -4189,18 +4171,6 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-707915937966769475": { "message": "unable to update pointer icon", "level": "WARN", "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-8663841671650918687": { "message": "unable to restore pointer icon", "level": "WARN", "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, "-6186782212018913664": { "message": "Invalid displayId for requestScrollCapture: %d", "level": "ERROR", Loading
services/core/java/com/android/server/wm/ActivityRecord.java +11 −60 Original line number Diff line number Diff line Loading @@ -2639,69 +2639,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } void scheduleAddStartingWindow() { mAddStartingWindow.run(); } private class AddStartingWindow implements Runnable { @Override public void run() { // Can be accessed without holding the global lock final StartingData startingData; synchronized (mWmService.mGlobalLock) { // There can only be one adding request, silly caller! if (mStartingData == null) { // Animation has been canceled... do nothing. ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingData was nulled out before handling" + " mAddStartingWindow: %s", ActivityRecord.this); return; } startingData = mStartingData; } private void scheduleAddStartingWindow() { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Add starting %s: startingData=%s", this, startingData); StartingSurfaceController.StartingSurface surface = null; try { surface = startingData.createStartingSurface(ActivityRecord.this); } catch (Exception e) { Slog.w(TAG, "Exception when adding starting window", e); } if (surface != null) { boolean abort = false; synchronized (mWmService.mGlobalLock) { // If the window was successfully added, then we need to remove it. if (mStartingData == null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Aborted starting %s: startingData=%s", ActivityRecord.this, mStartingData); this, mStartingData); mStartingWindow = null; mStartingData = null; abort = true; } else { mStartingSurface = surface; } if (!abort) { mStartingSurface = mStartingData.createStartingSurface(ActivityRecord.this); if (mStartingSurface != null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Added starting %s: startingWindow=%s startingView=%s", ActivityRecord.this, mStartingWindow, mStartingSurface); } } if (abort) { surface.remove(false /* prepareAnimation */, false /* hasImeSurface */); } } else { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Surface returned was null: %s", ActivityRecord.this); } } } private final AddStartingWindow mAddStartingWindow = new AddStartingWindow(); private int getStartingWindowType(boolean newTask, boolean taskSwitch, boolean processRunning, boolean allowTaskSnapshot, boolean activityCreated, boolean activityAllDrawn, Loading
services/core/java/com/android/server/wm/StartingData.java +1 −2 Original line number Diff line number Diff line Loading @@ -90,8 +90,7 @@ public abstract class StartingData { } /** * Creates the actual starting window surface. DO NOT HOLD THE WINDOW MANAGER LOCK WHEN CALLING * THIS METHOD. * Creates the actual starting window surface. * * @param activity the app to add the starting window to * @return a class implementing {@link StartingSurface} for easy removal with Loading
services/core/java/com/android/server/wm/StartingSurfaceController.java +36 −42 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ public class StartingSurfaceController { } StartingSurface createSplashScreenStartingSurface(ActivityRecord activity, int theme) { synchronized (mService.mGlobalLock) { final Task task = activity.getTask(); final TaskOrganizerController controller = mService.mAtmService.mTaskOrganizerController; Loading @@ -89,7 +88,6 @@ public class StartingSurfaceController { null /* taskSnapshot */)) { return new StartingSurface(task, controller.getTaskOrganizer()); } } return null; } Loading Loading @@ -143,16 +141,13 @@ public class StartingSurfaceController { StartingSurface createTaskSnapshotSurface(ActivityRecord activity, TaskSnapshot taskSnapshot) { final WindowState topFullscreenOpaqueWindow; final Task task; synchronized (mService.mGlobalLock) { task = activity.getTask(); final Task task = activity.getTask(); if (task == null) { Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find task for activity=" + activity); return null; } final ActivityRecord topFullscreenActivity = activity.getTask().getTopFullscreenActivity(); final ActivityRecord topFullscreenActivity = task.getTopFullscreenActivity(); if (topFullscreenActivity == null) { Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find top fullscreen for task=" + task); Loading @@ -179,7 +174,6 @@ public class StartingSurfaceController { } return null; } } private static final class DeferringStartingWindowRecord { final ActivityRecord mDeferring; Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +0 −18 Original line number Diff line number Diff line Loading @@ -2804,24 +2804,6 @@ public class ActivityRecordTests extends WindowTestsBase { assertHasStartingWindow(activity2); } @Test public void testTransferStartingWindowWhileCreating() { final TestStartingWindowOrganizer organizer = registerTestStartingWindowOrganizer(); final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true).build(); final ActivityRecord activity2 = new ActivityBuilder(mAtm).setCreateTask(true).build(); organizer.setRunnableWhenAddingSplashScreen( () -> { // Surprise, ...! Transfer window in the middle of the creation flow. activity2.addStartingWindow(mPackageName, android.R.style.Theme, activity1, true, true, false, true, false, false, false); }); activity1.addStartingWindow(mPackageName, android.R.style.Theme, null, true, true, false, true, false, false, false); waitUntilHandlersIdle(); assertNoStartingWindow(activity1); assertHasStartingWindow(activity2); } @Test public void testTransferStartingWindowCanAnimate() { registerTestStartingWindowOrganizer(); Loading