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

Commit bfa9388b authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge "Reset reusable SCVH on release" into main

parents 0f5a2481 fea3272c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@ public enum DesktopExperienceFlags {
    ENABLE_CAMERA_COMPAT_EXTERNAL_DISPLAY_ROTATION_BUGFIX(
            Flags::enableCameraCompatExternalDisplayRotationBugfix, false,
            Flags.FLAG_ENABLE_CAMERA_COMPAT_EXTERNAL_DISPLAY_ROTATION_BUGFIX),
    ENABLE_CLEAR_REUSABLE_SCVH_ON_RELEASE(Flags::clearReusableScvhOnRelease, false,
            Flags.FLAG_CLEAR_REUSABLE_SCVH_ON_RELEASE),
    ENABLE_CONNECTED_DISPLAYS_DND(Flags::enableConnectedDisplaysDnd, true,
            Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_DND),
    ENABLE_CONNECTED_DISPLAYS_PIP(Flags::enableConnectedDisplaysPip, true,
+10 −0
Original line number Diff line number Diff line
@@ -12,6 +12,16 @@ flag {
    }
}

flag {
    name: "clear_reusable_scvh_on_release"
    namespace: "lse_desktop_experience"
    description: "Resets the views of reusable SCVHs when released"
    bug: "432324168"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "close_task_keyboard_shortcut"
    namespace: "lse_desktop_experience"
+19 −3
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.wm.shell.windowdecor.WindowDecoration2.SurfaceControlViewHost
import com.android.wm.shell.windowdecor.WindowDecorationInsets
import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost
import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHostSupplier
import com.android.wm.shell.windowdecor.extension.identityHashCode
import com.android.wm.shell.windowdecor.extension.isRtl
import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppearance
import com.android.wm.shell.windowdecor.viewholder.WindowDecorationViewHolder
@@ -213,6 +214,7 @@ abstract class CaptionController<T>(
    protected open fun getCaptionTopPadding(): Int = 0

    /** Updates the caption's view hierarchy. */
    @OptIn(ExperimentalStdlibApi::class)
    private fun updateViewHierarchy(
        params: RelayoutParams,
        viewHost: WindowDecorViewHost,
@@ -228,11 +230,15 @@ abstract class CaptionController<T>(
        ) {
            val taskId = taskInfo.taskId
            logD(
                "updateViewHierarchy of taskId=%d size=%dx%d touchableRegion=%s",
                "updateViewHierarchy of taskId=%d size=%dx%d touchableRegion=%s " +
                    "view=%s viewParent=%s viewHost=%s",
                taskId,
                captionWidth,
                captionHeight,
                touchableRegion,
                view.identityHashCode.toHexString(),
                view.parent.identityHashCode.toHexString(),
                viewHost,
            )
            val lp =
                WindowManager.LayoutParams(
@@ -480,7 +486,12 @@ abstract class CaptionController<T>(
     * view holder.
     */
    private fun getOrCreateViewHolder(): WindowDecorationViewHolder<*> {
        val viewHolder = windowDecorationViewHolder ?: createCaptionView()
        val currentViewHolder = windowDecorationViewHolder
        if (currentViewHolder != null) {
            return currentViewHolder
        }
        val viewHolder = createCaptionView()
        logD("getOrCreateViewHolder() created new caption view: %s", viewHolder)
        windowDecorationViewHolder = viewHolder
        return viewHolder
    }
@@ -501,7 +512,12 @@ abstract class CaptionController<T>(
            traceTag = Trace.TRACE_TAG_WINDOW_MANAGER,
            name = "CaptionController#getOrCreateViewHost",
        ) {
            val viewHost = captionViewHost ?: windowDecorViewHostSupplier.acquire(context, display)
            val currentViewHost = captionViewHost
            if (currentViewHost != null) {
                return currentViewHost
            }
            val viewHost = windowDecorViewHostSupplier.acquire(context, display)
            logD("getOrCreateViewHost() acquired viewHost: %s", viewHost)
            captionViewHost = viewHost
            return viewHost
        }
+4 −0
Original line number Diff line number Diff line
@@ -82,6 +82,10 @@ class DefaultWindowDecorViewHost(
        Trace.endSection()
    }

    override fun reset() {
        // No-op.
    }

    override fun release(t: SurfaceControl.Transaction) {
        clearCurrentUpdateJob()
        viewHostAdapter.release(t)
+4 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.os.Trace
import android.util.Pools
import android.view.Display
import android.view.SurfaceControl
import android.window.DesktopExperienceFlags
import com.android.wm.shell.shared.annotations.ShellMainThread
import com.android.wm.shell.sysui.ShellInit
import kotlinx.coroutines.CoroutineScope
@@ -84,6 +85,9 @@ class PooledWindowDecorViewHostSupplier(
    }

    override fun release(viewHost: WindowDecorViewHost, t: SurfaceControl.Transaction) {
        if (DesktopExperienceFlags.ENABLE_CLEAR_REUSABLE_SCVH_ON_RELEASE.isTrue) {
            viewHost.reset()
        }
        val pooled = pool.release(viewHost)
        if (!pooled) {
            viewHost.release(t)
Loading