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

Commit c6611a73 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Allow WindowState to assign layer during transition." into udc-dev am:...

Merge "Allow WindowState to assign layer during transition." into udc-dev am: 28017afd am: bcfbc01d am: 1a81c0d0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23127077



Change-Id: I852c6c892f805e12b3176f017b9d375d0f7cd782
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a2da5d02 1a81c0d0
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -516,8 +516,14 @@ class TransitionController {
     * playing, but can be "opened-up" for certain transition operations like calculating layers
     * for finishTransaction.
     */
    boolean canAssignLayers() {
        return mBuildingFinishLayers || !isPlaying();
    boolean canAssignLayers(@NonNull WindowContainer wc) {
        // Don't build window state into finish transaction in case another window is added or
        // removed during transition playing.
        if (mBuildingFinishLayers) {
            return wc.asWindowState() == null;
        }
        // Always allow WindowState to assign layers since it won't affect transition.
        return wc.asWindowState() != null || !isPlaying();
    }

    @WindowConfiguration.WindowingMode
+1 −1
Original line number Diff line number Diff line
@@ -2596,7 +2596,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    void assignLayer(Transaction t, int layer) {
        // Don't assign layers while a transition animation is playing
        // TODO(b/173528115): establish robust best-practices around z-order fighting.
        if (!mTransitionController.canAssignLayers()) return;
        if (!mTransitionController.canAssignLayers(this)) return;
        final boolean changed = layer != mLastLayer || mLastRelativeToLayer != null;
        if (mSurfaceControl != null && changed) {
            setLayer(t, layer);