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

Commit 80841a13 authored by Gustav Sennton's avatar Gustav Sennton
Browse files

Add trace markers for main Connected Displays CUJs

Add trace markers for
- display connect / disconnect
- desk activation / deactivation

Bug: 422901783
Flag: EXEMPT tracing
Test: manual
Change-Id: If42757b1f3046fabf12118b2fde3e2e938a48b03
parent bf87dce3
Loading
Loading
Loading
Loading
+40 −24
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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)
@@ -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()
+63 −57
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -4148,6 +4150,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",
+15 −6
Original line number Diff line number Diff line
@@ -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
@@ -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,
        )
    }
@@ -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)
@@ -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)
@@ -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,
        )
    }