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

Commit 83753c9a authored by Evan Rosky's avatar Evan Rosky
Browse files

Treat GONE windows as READY for sync

Otherwise we will wait on them until the sync timeout.

Bug: 183993924
Test: atest AppConfigurationTests#testAppOrientationRequestConfigChange
Change-Id: I5e4050cc36997d87dcc3192d53959f7b56d516b0
parent 7f8b3749
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -5974,7 +5974,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        // since a generic WindowContainer only needs to wait for its
        // children to finish and is immediately ready from its own
        // perspective but at the WindowState level we need to wait for ourselves
        // to draw even if the children draw first our don't need to sync, so we start
        // to draw even if the children draw first or don't need to sync, so we start
        // in WAITING state rather than READY.
        mSyncState = SYNC_STATE_WAITING_FOR_DRAW;
        requestRedrawForSync();
@@ -5985,6 +5985,16 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        return true;
    }

    @Override
    boolean isSyncFinished() {
        if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mViewVisibility == View.GONE) {
            // Don't wait for GONE windows. However, we don't alter the state in case the window
            // becomes un-gone while the syncset is still active.
            return true;
        }
        return super.isSyncFinished();
    }

    boolean finishDrawing(SurfaceControl.Transaction postDrawTransaction) {
        if (mOrientationChangeRedrawRequestTime > 0) {
            final long duration =