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

Commit fd0b8985 authored by Chris Li's avatar Chris Li
Browse files

Synchronize window config updates (15/n)

When bundleClientTransactionFlag is enabled, we want to queue all
ClientTransactions before dispatch, but we also need to wait
handleResizingWindows() in order to dispatch WindowStateResizeItem in
the same transaction.

This cause an issue to the timing of other *organizerController pending
transactions dispatch. Move the handleResizingWindows() and
ClientTransaction dispatch to the front.

Bug: 260873529
Bug: 316859294
Test: manually verify with AE demo app.
Change-Id: Iae00a9632dc61d66d976d2d43635190c07a6ce91
parent dc352a4c
Loading
Loading
Loading
Loading
+12 −4
Original line number Original line Diff line number Diff line
@@ -152,6 +152,7 @@ import com.android.server.pm.UserManagerInternal;
import com.android.server.policy.PermissionPolicyInternal;
import com.android.server.policy.PermissionPolicyInternal;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.utils.Slogf;
import com.android.server.utils.Slogf;
import com.android.window.flags.Flags;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
@@ -795,6 +796,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
        }
        }


        if (Flags.bundleClientTransactionFlag()) {
            // mWmService.mResizingWindows is populated in #applySurfaceChangesTransaction()
            handleResizingWindows();

            // Called after #handleResizingWindows to include WindowStateResizeItem if any.
            mWmService.mAtmService.getLifecycleManager().dispatchPendingTransactions();
        }

        // Send any pending task-info changes that were queued-up during a layout deferment
        // Send any pending task-info changes that were queued-up during a layout deferment
        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingEvents();
        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingEvents();
        mWmService.mAtmService.mTaskFragmentOrganizerController.dispatchPendingEvents();
        mWmService.mAtmService.mTaskFragmentOrganizerController.dispatchPendingEvents();
@@ -838,12 +847,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            }
            }
        }
        }


        if (!Flags.bundleClientTransactionFlag()) {
            handleResizingWindows();
            handleResizingWindows();
        }
        clearFrameChangingWindows();
        clearFrameChangingWindows();


        // Called after #handleResizingWindows to include WindowStateResizeItem if any.
        mWmService.mAtmService.getLifecycleManager().dispatchPendingTransactions();

        if (mWmService.mDisplayFrozen) {
        if (mWmService.mDisplayFrozen) {
            ProtoLog.v(WM_DEBUG_ORIENTATION,
            ProtoLog.v(WM_DEBUG_ORIENTATION,
                    "With display frozen, orientationChangeComplete=%b",
                    "With display frozen, orientationChangeComplete=%b",