Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +15 −0 Original line number Diff line number Diff line Loading @@ -1007,6 +1007,21 @@ class DesktopRepository( fun saveBoundsBeforeFullImmersive(taskId: Int, bounds: Rect) = boundsBeforeFullImmersiveByTaskId.set(taskId, Rect(bounds)) /** Returns the current state of the desktop, formatted for usage by remote clients. */ fun getDeskDisplayStateForRemote(): Array<DisplayDeskState> = desktopData .desksSequence() .groupBy { it.displayId } .map { (displayId, desks) -> val activeDeskId = desktopData.getActiveDesk(displayId)?.deskId DisplayDeskState().apply { this.displayId = displayId this.activeDeskId = activeDeskId ?: INVALID_DESK_ID this.deskIds = desks.map { it.deskId }.toIntArray() } } .toTypedArray() /** TODO: b/389960283 - consider updating only the changing desks. */ private fun updatePersistentRepository(displayId: Int) { val desks = desktopData.desksSequence(displayId).map { desk -> desk.deepCopy() }.toList() Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +28 −19 Original line number Diff line number Diff line Loading @@ -3613,27 +3613,11 @@ class DesktopTasksController( controller, { c -> run { c.taskRepository.addDeskChangeListener( deskChangeListener, c.mainExecutor, ) c.taskRepository.addVisibleTasksListener( visibleTasksListener, c.mainExecutor, ) c.taskbarDesktopTaskListener = taskbarDesktopTaskListener c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener } }, { c -> run { c.taskRepository.removeDeskChangeListener(deskChangeListener) c.taskRepository.removeVisibleTasksListener(visibleTasksListener) c.taskbarDesktopTaskListener = null c.desktopModeEnterExitTransitionListener = null syncInitialState(c) registerListeners(c) } }, { c -> run { unregisterListeners(c) } }, ) } Loading Loading @@ -3729,6 +3713,31 @@ class DesktopTasksController( c.startLaunchIntentTransition(intent, options, displayId) } } private fun syncInitialState(c: DesktopTasksController) { remoteListener.call { l -> // TODO: b/393962589 - implement desks limit. val canCreateDesks = true l.onListenerConnected( c.taskRepository.getDeskDisplayStateForRemote(), canCreateDesks, ) } } private fun registerListeners(c: DesktopTasksController) { c.taskRepository.addDeskChangeListener(deskChangeListener, c.mainExecutor) c.taskRepository.addVisibleTasksListener(visibleTasksListener, c.mainExecutor) c.taskbarDesktopTaskListener = taskbarDesktopTaskListener c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener } private fun unregisterListeners(c: DesktopTasksController) { c.taskRepository.removeDeskChangeListener(deskChangeListener) c.taskRepository.removeVisibleTasksListener(visibleTasksListener) c.taskbarDesktopTaskListener = null c.desktopModeEnterExitTransitionListener = null } } private fun logV(msg: String, vararg arguments: Any?) { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +15 −0 Original line number Diff line number Diff line Loading @@ -1007,6 +1007,21 @@ class DesktopRepository( fun saveBoundsBeforeFullImmersive(taskId: Int, bounds: Rect) = boundsBeforeFullImmersiveByTaskId.set(taskId, Rect(bounds)) /** Returns the current state of the desktop, formatted for usage by remote clients. */ fun getDeskDisplayStateForRemote(): Array<DisplayDeskState> = desktopData .desksSequence() .groupBy { it.displayId } .map { (displayId, desks) -> val activeDeskId = desktopData.getActiveDesk(displayId)?.deskId DisplayDeskState().apply { this.displayId = displayId this.activeDeskId = activeDeskId ?: INVALID_DESK_ID this.deskIds = desks.map { it.deskId }.toIntArray() } } .toTypedArray() /** TODO: b/389960283 - consider updating only the changing desks. */ private fun updatePersistentRepository(displayId: Int) { val desks = desktopData.desksSequence(displayId).map { desk -> desk.deepCopy() }.toList() Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +28 −19 Original line number Diff line number Diff line Loading @@ -3613,27 +3613,11 @@ class DesktopTasksController( controller, { c -> run { c.taskRepository.addDeskChangeListener( deskChangeListener, c.mainExecutor, ) c.taskRepository.addVisibleTasksListener( visibleTasksListener, c.mainExecutor, ) c.taskbarDesktopTaskListener = taskbarDesktopTaskListener c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener } }, { c -> run { c.taskRepository.removeDeskChangeListener(deskChangeListener) c.taskRepository.removeVisibleTasksListener(visibleTasksListener) c.taskbarDesktopTaskListener = null c.desktopModeEnterExitTransitionListener = null syncInitialState(c) registerListeners(c) } }, { c -> run { unregisterListeners(c) } }, ) } Loading Loading @@ -3729,6 +3713,31 @@ class DesktopTasksController( c.startLaunchIntentTransition(intent, options, displayId) } } private fun syncInitialState(c: DesktopTasksController) { remoteListener.call { l -> // TODO: b/393962589 - implement desks limit. val canCreateDesks = true l.onListenerConnected( c.taskRepository.getDeskDisplayStateForRemote(), canCreateDesks, ) } } private fun registerListeners(c: DesktopTasksController) { c.taskRepository.addDeskChangeListener(deskChangeListener, c.mainExecutor) c.taskRepository.addVisibleTasksListener(visibleTasksListener, c.mainExecutor) c.taskbarDesktopTaskListener = taskbarDesktopTaskListener c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener } private fun unregisterListeners(c: DesktopTasksController) { c.taskRepository.removeDeskChangeListener(deskChangeListener) c.taskRepository.removeVisibleTasksListener(visibleTasksListener) c.taskbarDesktopTaskListener = null c.desktopModeEnterExitTransitionListener = null } } private fun logV(msg: String, vararg arguments: Any?) { Loading