Merge "WM: Add debug information for forced seamless rotation" into pi-dev
am: 4db8f31c43
Change-Id: I70af626a302fde9b3bd7bd4733799cac67e5dcbe
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user