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

am: 4db8f31c43

Change-Id: I70af626a302fde9b3bd7bd4733799cac67e5dcbe
This commit is contained in:
Chavi Weingarten
2018-07-09 17:55:40 -07:00
committed by android-build-merger
4 changed files with 41 additions and 0 deletions

View File

@@ -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 {

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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);