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

Commit 30df0345 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: 4d6ffc33

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



Change-Id: I4e9f002d0986d35711e57dcace35ae16c44f03ae
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 22e744e7 4d6ffc33
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);