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

Commit b5379deb authored by Maryam Dehaini's avatar Maryam Dehaini
Browse files

Set CaptionController to null when views are released

Remove caption controller reference when views are released rather than
keeping the reference saved in WindowDecoration2.

Merges captionController#releaseViews and captionController#close into
one function since there is no point where one should be called but not
the other.

Bug: 437194304
Test: manual testing
Flag: com.android.window.flags.enable_window_decoration_refactor
Change-Id: I65340acfb1e32100e5f8cc1ab2909d2f7e62308d
parent 43df27f2
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -287,7 +287,8 @@ abstract class WindowDecoration2<T>(
    private fun releaseCaptionController() {
        val wct = windowContainerTransactionSupplier()
        val t = surfaceControlTransactionSupplier()
        captionController?.releaseViews(wct, t)
        captionController?.close(wct, t)
        captionController = null
        t.apply()
        taskOrganizer.applyTransaction(wct)
    }
@@ -523,7 +524,8 @@ abstract class WindowDecoration2<T>(
                released = true
            }

            released = released or (captionController?.releaseViews(wct, t) == true)
            released = released or (captionController?.close(wct, t) == true)
            captionController = null

            if (released) {
                t.apply()
@@ -534,7 +536,6 @@ abstract class WindowDecoration2<T>(
        traceSection(traceTag = Trace.TRACE_TAG_WINDOW_MANAGER, name = "WindowDecoration2#close") {
            displayController.removeDisplayWindowListener(onDisplaysChangedListener)
            taskDragResizer?.close()
            captionController?.close()
            val wct = windowContainerTransactionSupplier()
            releaseViews(wct)
            taskOrganizer.applyTransaction(wct)
+2 −11
Original line number Diff line number Diff line
@@ -498,21 +498,12 @@ class AppHandleController(

    override val occludingElements: List<OccludingElement> = emptyList()

    override fun releaseViews(
        wct: WindowContainerTransaction,
        t: SurfaceControl.Transaction,
    ): Boolean {
        closeHandleMenu()
        closeManageWindowsMenu()
        disposeStatusBarInputLayer()
        return super.releaseViews(wct, t)
    }

    override fun close() {
    override fun close(wct: WindowContainerTransaction, t: SurfaceControl.Transaction): Boolean {
        closeHandleMenu()
        closeManageWindowsMenu()
        disposeStatusBarInputLayer()
        viewHolder.close()
        notifyNoCaption()
        return super.close(wct, t)
    }
}
+2 −11
Original line number Diff line number Diff line
@@ -725,17 +725,7 @@ class AppHeaderController(
        viewHolder.a11yAnnounceFocused()
    }

    override fun releaseViews(
        wct: WindowContainerTransaction,
        t: SurfaceControl.Transaction,
    ): Boolean {
        closeHandleMenu()
        closeManageWindowsMenu()
        closeMaximizeMenu()
        return super.releaseViews(wct, t)
    }

    override fun close() {
    override fun close(wct: WindowContainerTransaction, t: SurfaceControl.Transaction): Boolean {
        loadAppInfoJob?.cancel()
        closeHandleMenu()
        closeManageWindowsMenu()
@@ -744,6 +734,7 @@ class AppHeaderController(
        if (desktopState.canEnterDesktopMode && isEducationEnabled) {
            notifyNoCaption()
        }
        return super.close(wct, t)
    }

    private companion object {
+1 −4
Original line number Diff line number Diff line
@@ -92,9 +92,6 @@ abstract class CaptionController<T>(
    /** Type of caption. */
    abstract val captionType: CaptionType

    /** Called when [WindowDecoration2] is closing. */
    abstract fun close()

    /**
     * Returns the caption height including any additional padding that will be added to the
     * caption.
@@ -497,7 +494,7 @@ abstract class CaptionController<T>(
    }

    /** Releases all caption views. Returns true if caption view host is released. */
    open fun releaseViews(wct: WindowContainerTransaction, t: SurfaceControl.Transaction): Boolean =
    open fun close(wct: WindowContainerTransaction, t: SurfaceControl.Transaction): Boolean =
        traceSection(
            traceTag = Trace.TRACE_TAG_WINDOW_MANAGER,
            name = "CaptionController#releaseViews",