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

Commit 1e8c4c8c authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Revert "Revert "Avoid setting size/position on Transaction if not needed""

Original issue will be fixed with CL in same topic

This reverts commit d70feb23.

Bug: 71694437
Bug: 71692657
Bug: 71510789
parent 4130a68a
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ import static com.android.server.wm.proto.StackProto.WINDOW_CONTAINER;


import android.annotation.CallSuper;
import android.annotation.CallSuper;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.Region;
import android.os.RemoteException;
import android.os.RemoteException;
@@ -145,6 +146,7 @@ public class TaskStack extends WindowContainer<Task> implements
     * For {@link #prepareSurfaces}.
     * For {@link #prepareSurfaces}.
     */
     */
    final Rect mTmpDimBoundsRect = new Rect();
    final Rect mTmpDimBoundsRect = new Rect();
    private final Point mLastSurfaceSize = new Point();


    TaskStack(WindowManagerService service, int stackId, StackWindowController controller) {
    TaskStack(WindowManagerService service, int stackId, StackWindowController controller) {
        super(service);
        super(service);
@@ -744,7 +746,13 @@ public class TaskStack extends WindowContainer<Task> implements
        }
        }


        final Rect stackBounds = getBounds();
        final Rect stackBounds = getBounds();
        transaction.setSize(mSurfaceControl, stackBounds.width(), stackBounds.height());
        final int width = stackBounds.width();
        final int height = stackBounds.height();
        if (width == mLastSurfaceSize.x && height == mLastSurfaceSize.y) {
            return;
        }
        transaction.setSize(mSurfaceControl, width, height);
        mLastSurfaceSize.set(width, height);
    }
    }


    @Override
    @Override
+6 −0
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    protected final WindowManagerService mService;
    protected final WindowManagerService mService;


    private final Point mTmpPos = new Point();
    private final Point mTmpPos = new Point();
    protected final Point mLastSurfacePosition = new Point();


    /** Total number of elements in this subtree, including our own hierarchy element. */
    /** Total number of elements in this subtree, including our own hierarchy element. */
    private int mTreeWeight = 1;
    private int mTreeWeight = 1;
@@ -1178,7 +1179,12 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        }
        }


        getRelativePosition(mTmpPos);
        getRelativePosition(mTmpPos);
        if (mTmpPos.equals(mLastSurfacePosition)) {
            return;
        }

        transaction.setPosition(mSurfaceControl, mTmpPos.x, mTmpPos.y);
        transaction.setPosition(mSurfaceControl, mTmpPos.x, mTmpPos.y);
        mLastSurfacePosition.set(mTmpPos.x, mTmpPos.y);


        for (int i = mChildren.size() - 1; i >= 0; i--) {
        for (int i = mChildren.size() - 1; i >= 0; i--) {
            mChildren.get(i).updateSurfacePosition(transaction);
            mChildren.get(i).updateSurfacePosition(transaction);
+3 −1
Original line number Original line Diff line number Diff line
@@ -4487,6 +4487,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP


        // Leash is now responsible for position, so set our position to 0.
        // Leash is now responsible for position, so set our position to 0.
        t.setPosition(mSurfaceControl, 0, 0);
        t.setPosition(mSurfaceControl, 0, 0);
        mLastSurfacePosition.set(0, 0);
    }
    }


    @Override
    @Override
@@ -4502,8 +4503,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        }
        }


        transformFrameToSurfacePosition(mFrame.left, mFrame.top, mSurfacePosition);
        transformFrameToSurfacePosition(mFrame.left, mFrame.top, mSurfacePosition);
        if (!mSurfaceAnimator.hasLeash()) {
        if (!mSurfaceAnimator.hasLeash() && !mLastSurfacePosition.equals(mSurfacePosition)) {
            t.setPosition(mSurfaceControl, mSurfacePosition.x, mSurfacePosition.y);
            t.setPosition(mSurfaceControl, mSurfacePosition.x, mSurfacePosition.y);
            mLastSurfacePosition.set(mSurfacePosition.x, mSurfacePosition.y);
        }
        }
    }
    }