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

Commit 1318f4fa authored by Chavi Weingarten's avatar Chavi Weingarten Committed by android-build-merger
Browse files

Merge "WM: Add debug information for forced seamless rotation" into pi-dev

am: 4db8f31c

Change-Id: I70af626a302fde9b3bd7bd4733799cac67e5dcbe
parents df1ac170 4db8f31c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -319,6 +319,8 @@ message WindowStateProto {
    optional bool removed = 36;
    optional bool is_on_screen = 37;
    optional bool is_visible = 38;
    optional bool pending_forced_seamless_rotation = 39;
    optional int64 finished_forced_seamless_rotation_frame = 40;
}

message IdentifierProto {
+20 −0
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ import android.view.DisplayInfo;

import com.android.server.wm.utils.CoordinateTransforms;

import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * Helper class for forced seamless rotation.
 *
@@ -36,8 +39,13 @@ public class ForcedSeamlessRotator {

    private final Matrix mTransform = new Matrix();
    private final float[] mFloat9 = new float[9];
    private final int mOldRotation;
    private final int mNewRotation;

    public ForcedSeamlessRotator(int oldRotation, int newRotation, DisplayInfo info) {
        mOldRotation = oldRotation;
        mNewRotation = newRotation;

        final boolean flipped = info.rotation == ROTATION_90 || info.rotation == ROTATION_270;
        final int h = flipped ? info.logicalWidth : info.logicalHeight;
        final int w = flipped ? info.logicalHeight : info.logicalWidth;
@@ -74,4 +82,16 @@ public class ForcedSeamlessRotator {
                win.mWinAnimator.mSurfaceController.mSurfaceControl.getHandle(),
                win.getFrameNumber());
    }

    public void dump(PrintWriter pw) {
        pw.print("{old="); pw.print(mOldRotation); pw.print(", new="); pw.print(mNewRotation);
        pw.print("}");
    }

    @Override
    public String toString() {
        StringWriter sw = new StringWriter();
        dump(new PrintWriter(sw));
        return "ForcedSeamlessRotator" + sw.toString();
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -1886,6 +1886,7 @@ public class WindowManagerService extends IWindowManager.Stub

            if (win.mPendingForcedSeamlessRotate != null && !mWaitingForConfig) {
                win.mPendingForcedSeamlessRotate.finish(win.mToken, win);
                win.mFinishForcedSeamlessRotateFrameNumber = win.getFrameNumber();
                win.mPendingForcedSeamlessRotate = null;
            }

+18 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ import static com.android.server.wm.WindowStateProto.DECOR_FRAME;
import static com.android.server.wm.WindowStateProto.DESTROYING;
import static com.android.server.wm.WindowStateProto.DISPLAY_FRAME;
import static com.android.server.wm.WindowStateProto.DISPLAY_ID;
import static com.android.server.wm.WindowStateProto.FINISHED_FORCED_SEAMLESS_ROTATION_FRAME;
import static com.android.server.wm.WindowStateProto.FRAME;
import static com.android.server.wm.WindowStateProto.GIVEN_CONTENT_INSETS;
import static com.android.server.wm.WindowStateProto.HAS_SURFACE;
@@ -137,6 +138,7 @@ import static com.android.server.wm.WindowStateProto.OUTSET_FRAME;
import static com.android.server.wm.WindowStateProto.OVERSCAN_FRAME;
import static com.android.server.wm.WindowStateProto.OVERSCAN_INSETS;
import static com.android.server.wm.WindowStateProto.PARENT_FRAME;
import static com.android.server.wm.WindowStateProto.PENDING_FORCED_SEAMLESS_ROTATION;
import static com.android.server.wm.WindowStateProto.REMOVED;
import static com.android.server.wm.WindowStateProto.REMOVE_ON_EXIT;
import static com.android.server.wm.WindowStateProto.REQUESTED_HEIGHT;
@@ -287,6 +289,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
     */
    final boolean mForceSeamlesslyRotate;
    ForcedSeamlessRotator mPendingForcedSeamlessRotate;
    long mFinishForcedSeamlessRotateFrameNumber;

    private RemoteCallbackList<IWindowFocusObserver> mFocusCallbacks;

@@ -3305,6 +3308,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        proto.write(REMOVED, mRemoved);
        proto.write(IS_ON_SCREEN, isOnScreen());
        proto.write(IS_VISIBLE, isVisible());
        if (mForceSeamlesslyRotate) {
            proto.write(PENDING_FORCED_SEAMLESS_ROTATION, mPendingForcedSeamlessRotate != null);
            proto.write(FINISHED_FORCED_SEAMLESS_ROTATION_FRAME,
                    mFinishForcedSeamlessRotateFrameNumber);
        }
        proto.end(token);
    }

@@ -3481,6 +3489,16 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
            pw.print(prefix); pw.print("mLastFreezeDuration=");
                    TimeUtils.formatDuration(mLastFreezeDuration, pw); pw.println();
        }
        if (mForceSeamlesslyRotate) {
            pw.print(prefix); pw.print("forceSeamlesslyRotate: pending=");
            if (mPendingForcedSeamlessRotate != null) {
                mPendingForcedSeamlessRotate.dump(pw);
            } else {
                pw.print("null");
            }
            pw.print(" finishedFrameNumber="); pw.print(mFinishForcedSeamlessRotateFrameNumber);
            pw.println();
        }
        if (mHScale != 1 || mVScale != 1) {
            pw.print(prefix); pw.print("mHScale="); pw.print(mHScale);
                    pw.print(" mVScale="); pw.println(mVScale);