Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandler.kt +40 −24 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.desktopmode import android.content.Context import android.os.Trace import android.os.UserHandle import android.os.UserManager import android.view.Display Loading @@ -25,6 +26,7 @@ import android.window.DesktopExperienceFlags import android.window.DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_ACTIVATION_IN_DESKTOP_FIRST_DISPLAYS import android.window.DesktopModeFlags import android.window.DisplayAreaInfo import com.android.app.tracing.traceSection import com.android.internal.protolog.ProtoLog import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.RootTaskDisplayAreaOrganizer.RootTaskDisplayAreaListener Loading Loading @@ -101,9 +103,16 @@ class DesktopDisplayEventHandler( } } override fun onDisplayAdded(displayId: Int) { override fun onDisplayAdded(displayId: Int) = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopDisplayEventHandler#onDisplayAdded: $displayId", ) { if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { rootTaskDisplayAreaOrganizer.registerListener(displayId, onDisplayAreaChangeListener) rootTaskDisplayAreaOrganizer.registerListener( displayId, onDisplayAreaChangeListener, ) } if (displayId != DEFAULT_DISPLAY) { desktopDisplayModeController.updateExternalDisplayWindowingMode(displayId) Loading @@ -120,9 +129,16 @@ class DesktopDisplayEventHandler( } } override fun onDisplayRemoved(displayId: Int) { override fun onDisplayRemoved(displayId: Int): Unit = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopDisplayEventHandler#onDisplayRemoved: $displayId", ) { if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { rootTaskDisplayAreaOrganizer.unregisterListener(displayId, onDisplayAreaChangeListener) rootTaskDisplayAreaOrganizer.unregisterListener( displayId, onDisplayAreaChangeListener, ) } if (displayId != DEFAULT_DISPLAY) { desktopDisplayModeController.updateDefaultDisplayWindowingMode() Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +63 −57 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.os.Bundle import android.os.Handler import android.os.IBinder import android.os.SystemProperties import android.os.Trace import android.os.UserHandle import android.os.UserManager import android.util.Slog Loading Loading @@ -82,6 +83,7 @@ import android.window.TransitionInfo.Change import android.window.TransitionRequestInfo import android.window.WindowContainerTransaction import androidx.annotation.BinderThread import com.android.app.tracing.traceSection import com.android.internal.annotations.VisibleForTesting import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_HOLD import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE Loading Loading @@ -4169,6 +4171,10 @@ class DesktopTasksController( deskId: Int, remoteTransition: RemoteTransition? = null, taskIdToReorderToFront: Int? = null, ) = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopTasksController#activateDesk: $deskId", ) { logD( "activateDesk deskId=%d taskIdToReorderToFront=%d remoteTransition=%s", Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.desktopmode.multidesks import android.app.ActivityTaskManager.INVALID_TASK_ID import android.os.IBinder import android.os.Trace import android.view.Display.INVALID_DISPLAY import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_TO_BACK Loading Loading @@ -67,7 +68,10 @@ class DesksTransitionObserver( * observer. */ fun onTransitionReady(transition: IBinder, info: TransitionInfo) = traceSection("DesksTransitionObserver#onTransitionReady") { traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "DesksTransitionObserver#onTransitionReady", ) { if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) return val deskTransitions = deskTransitions.remove(transition) deskTransitions?.forEach { deskTransition -> Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt +15 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.app.WindowConfiguration.windowingModeToString import android.os.Trace import android.util.SparseArray import android.view.SurfaceControl import android.view.WindowManager.TRANSIT_TO_FRONT Loading Loading @@ -157,9 +158,9 @@ class RootTaskDesksOrganizer( .setDisplayId(displayId) .setWindowingMode(WINDOWING_MODE_FREEFORM) .setRemoveWithTaskOrganizer(true) .setReparentOnDisplayRemoval(DesktopExperienceFlags .ENABLE_DISPLAY_DISCONNECT_INTERACTION .isTrue), .setReparentOnDisplayRemoval( DesktopExperienceFlags.ENABLE_DISPLAY_DISCONNECT_INTERACTION.isTrue ), this, ) } Loading Loading @@ -208,6 +209,10 @@ class RootTaskDesksOrganizer( } override fun activateDesk(wct: WindowContainerTransaction, deskId: Int, skipReorder: Boolean) { Trace.instant( Trace.TRACE_TAG_WINDOW_MANAGER, "RootTaskDesksOrganizer#activateDesk: $deskId", ) logV("activateDesk %d", deskId) val root = checkNotNull(deskRootsByDeskId[deskId]) { "Root not found for desk: $deskId" } if (!skipReorder) wct.reorder(root.token, /* onTop= */ true) Loading @@ -220,6 +225,10 @@ class RootTaskDesksOrganizer( deskId: Int, skipReorder: Boolean, ) { Trace.instant( Trace.TRACE_TAG_WINDOW_MANAGER, "RootTaskDesksOrganizer#deactivateDesk: $deskId", ) logV("deactivateDesk %d", deskId) val root = checkNotNull(deskRootsByDeskId[deskId]) { "Root not found for desk: $deskId" } if (!skipReorder) wct.reorder(root.taskInfo.token, /* onTop= */ false) Loading Loading @@ -624,9 +633,9 @@ class RootTaskDesksOrganizer( .setDisplayId(displayId) .setWindowingMode(WINDOWING_MODE_FREEFORM) .setRemoveWithTaskOrganizer(true) .setReparentOnDisplayRemoval(DesktopExperienceFlags .ENABLE_DISPLAY_DISCONNECT_INTERACTION .isTrue), .setReparentOnDisplayRemoval( DesktopExperienceFlags.ENABLE_DISPLAY_DISCONNECT_INTERACTION.isTrue ), this, ) } Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration2.kt +17 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.graphics.Region import android.gui.BorderSettings import android.gui.BoxShadowSettings import android.os.Handler import android.os.Trace import android.view.Display import android.view.InsetsSource import android.view.InsetsState Loading Loading @@ -140,7 +141,10 @@ abstract class WindowDecoration2<T>( startT: SurfaceControl.Transaction, finishT: SurfaceControl.Transaction, wct: WindowContainerTransaction, ): RelayoutResult<T>? = traceSection("WindowDecoration2#relayout") { ): RelayoutResult<T>? = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout", ) { taskInfo = params.runningTaskInfo hasGlobalFocus = params.hasGlobalFocus exclusionRegion.set(params.displayExclusionRegion) Loading Loading @@ -193,7 +197,10 @@ abstract class WindowDecoration2<T>( ) } else INVALID_SHADOW_RADIUS traceSection("WindowDecoration2#relayout-updateSurfacesAndInsets") { traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout-updateSurfacesAndInsets", ) { updateDecorationContainerSurface(startT, taskWidth, taskHeight) updateTaskSurface( params, Loading Loading @@ -378,7 +385,10 @@ abstract class WindowDecoration2<T>( private fun releaseViewsIfNeeded( params: RelayoutParams, wct: WindowContainerTransaction, ) = traceSection("WindowDecoration2#relayout-releaseViewsIfNeeded") { ) = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout-releaseViewsIfNeeded", ) { val windowDecorConfigInitialized = windowDecorConfig != null val fontScaleChanged = windowDecorConfig?.fontScale != taskInfo.configuration.fontScale val localeListChanged = windowDecorConfig?.locales != taskInfo.getConfiguration().locales Loading Loading @@ -473,7 +483,10 @@ abstract class WindowDecoration2<T>( } } override fun close() = traceSection("WindowDecoration2#close") { override fun close() = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#close", ) { displayController.removeDisplayWindowListener(onDisplaysChangedListener) taskDragResizer?.close() captionController?.close() Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandler.kt +40 −24 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.desktopmode import android.content.Context import android.os.Trace import android.os.UserHandle import android.os.UserManager import android.view.Display Loading @@ -25,6 +26,7 @@ import android.window.DesktopExperienceFlags import android.window.DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_ACTIVATION_IN_DESKTOP_FIRST_DISPLAYS import android.window.DesktopModeFlags import android.window.DisplayAreaInfo import com.android.app.tracing.traceSection import com.android.internal.protolog.ProtoLog import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.RootTaskDisplayAreaOrganizer.RootTaskDisplayAreaListener Loading Loading @@ -101,9 +103,16 @@ class DesktopDisplayEventHandler( } } override fun onDisplayAdded(displayId: Int) { override fun onDisplayAdded(displayId: Int) = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopDisplayEventHandler#onDisplayAdded: $displayId", ) { if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { rootTaskDisplayAreaOrganizer.registerListener(displayId, onDisplayAreaChangeListener) rootTaskDisplayAreaOrganizer.registerListener( displayId, onDisplayAreaChangeListener, ) } if (displayId != DEFAULT_DISPLAY) { desktopDisplayModeController.updateExternalDisplayWindowingMode(displayId) Loading @@ -120,9 +129,16 @@ class DesktopDisplayEventHandler( } } override fun onDisplayRemoved(displayId: Int) { override fun onDisplayRemoved(displayId: Int): Unit = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopDisplayEventHandler#onDisplayRemoved: $displayId", ) { if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { rootTaskDisplayAreaOrganizer.unregisterListener(displayId, onDisplayAreaChangeListener) rootTaskDisplayAreaOrganizer.unregisterListener( displayId, onDisplayAreaChangeListener, ) } if (displayId != DEFAULT_DISPLAY) { desktopDisplayModeController.updateDefaultDisplayWindowingMode() Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +63 −57 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.os.Bundle import android.os.Handler import android.os.IBinder import android.os.SystemProperties import android.os.Trace import android.os.UserHandle import android.os.UserManager import android.util.Slog Loading Loading @@ -82,6 +83,7 @@ import android.window.TransitionInfo.Change import android.window.TransitionRequestInfo import android.window.WindowContainerTransaction import androidx.annotation.BinderThread import com.android.app.tracing.traceSection import com.android.internal.annotations.VisibleForTesting import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_HOLD import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE Loading Loading @@ -4169,6 +4171,10 @@ class DesktopTasksController( deskId: Int, remoteTransition: RemoteTransition? = null, taskIdToReorderToFront: Int? = null, ) = traceSection( Trace.TRACE_TAG_WINDOW_MANAGER, "DesktopTasksController#activateDesk: $deskId", ) { logD( "activateDesk deskId=%d taskIdToReorderToFront=%d remoteTransition=%s", Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt +5 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.desktopmode.multidesks import android.app.ActivityTaskManager.INVALID_TASK_ID import android.os.IBinder import android.os.Trace import android.view.Display.INVALID_DISPLAY import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_TO_BACK Loading Loading @@ -67,7 +68,10 @@ class DesksTransitionObserver( * observer. */ fun onTransitionReady(transition: IBinder, info: TransitionInfo) = traceSection("DesksTransitionObserver#onTransitionReady") { traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "DesksTransitionObserver#onTransitionReady", ) { if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) return val deskTransitions = deskTransitions.remove(transition) deskTransitions?.forEach { deskTransition -> Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt +15 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.app.WindowConfiguration.windowingModeToString import android.os.Trace import android.util.SparseArray import android.view.SurfaceControl import android.view.WindowManager.TRANSIT_TO_FRONT Loading Loading @@ -157,9 +158,9 @@ class RootTaskDesksOrganizer( .setDisplayId(displayId) .setWindowingMode(WINDOWING_MODE_FREEFORM) .setRemoveWithTaskOrganizer(true) .setReparentOnDisplayRemoval(DesktopExperienceFlags .ENABLE_DISPLAY_DISCONNECT_INTERACTION .isTrue), .setReparentOnDisplayRemoval( DesktopExperienceFlags.ENABLE_DISPLAY_DISCONNECT_INTERACTION.isTrue ), this, ) } Loading Loading @@ -208,6 +209,10 @@ class RootTaskDesksOrganizer( } override fun activateDesk(wct: WindowContainerTransaction, deskId: Int, skipReorder: Boolean) { Trace.instant( Trace.TRACE_TAG_WINDOW_MANAGER, "RootTaskDesksOrganizer#activateDesk: $deskId", ) logV("activateDesk %d", deskId) val root = checkNotNull(deskRootsByDeskId[deskId]) { "Root not found for desk: $deskId" } if (!skipReorder) wct.reorder(root.token, /* onTop= */ true) Loading @@ -220,6 +225,10 @@ class RootTaskDesksOrganizer( deskId: Int, skipReorder: Boolean, ) { Trace.instant( Trace.TRACE_TAG_WINDOW_MANAGER, "RootTaskDesksOrganizer#deactivateDesk: $deskId", ) logV("deactivateDesk %d", deskId) val root = checkNotNull(deskRootsByDeskId[deskId]) { "Root not found for desk: $deskId" } if (!skipReorder) wct.reorder(root.taskInfo.token, /* onTop= */ false) Loading Loading @@ -624,9 +633,9 @@ class RootTaskDesksOrganizer( .setDisplayId(displayId) .setWindowingMode(WINDOWING_MODE_FREEFORM) .setRemoveWithTaskOrganizer(true) .setReparentOnDisplayRemoval(DesktopExperienceFlags .ENABLE_DISPLAY_DISCONNECT_INTERACTION .isTrue), .setReparentOnDisplayRemoval( DesktopExperienceFlags.ENABLE_DISPLAY_DISCONNECT_INTERACTION.isTrue ), this, ) } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration2.kt +17 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.graphics.Region import android.gui.BorderSettings import android.gui.BoxShadowSettings import android.os.Handler import android.os.Trace import android.view.Display import android.view.InsetsSource import android.view.InsetsState Loading Loading @@ -140,7 +141,10 @@ abstract class WindowDecoration2<T>( startT: SurfaceControl.Transaction, finishT: SurfaceControl.Transaction, wct: WindowContainerTransaction, ): RelayoutResult<T>? = traceSection("WindowDecoration2#relayout") { ): RelayoutResult<T>? = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout", ) { taskInfo = params.runningTaskInfo hasGlobalFocus = params.hasGlobalFocus exclusionRegion.set(params.displayExclusionRegion) Loading Loading @@ -193,7 +197,10 @@ abstract class WindowDecoration2<T>( ) } else INVALID_SHADOW_RADIUS traceSection("WindowDecoration2#relayout-updateSurfacesAndInsets") { traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout-updateSurfacesAndInsets", ) { updateDecorationContainerSurface(startT, taskWidth, taskHeight) updateTaskSurface( params, Loading Loading @@ -378,7 +385,10 @@ abstract class WindowDecoration2<T>( private fun releaseViewsIfNeeded( params: RelayoutParams, wct: WindowContainerTransaction, ) = traceSection("WindowDecoration2#relayout-releaseViewsIfNeeded") { ) = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#relayout-releaseViewsIfNeeded", ) { val windowDecorConfigInitialized = windowDecorConfig != null val fontScaleChanged = windowDecorConfig?.fontScale != taskInfo.configuration.fontScale val localeListChanged = windowDecorConfig?.locales != taskInfo.getConfiguration().locales Loading Loading @@ -473,7 +483,10 @@ abstract class WindowDecoration2<T>( } } override fun close() = traceSection("WindowDecoration2#close") { override fun close() = traceSection( traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#close", ) { displayController.removeDisplayWindowListener(onDisplaysChangedListener) taskDragResizer?.close() captionController?.close() Loading