ViewRootImpl: Replace usage of orientation with buffer transform for transform hint

Fixes: 202797234
Test: atest VulkanPreTransformTest#testVulkanPreTransformNotSetToMatchCurrentTransform
Change-Id: Iddb2e0b045096b4b86c0bc3f8222b61de67994bc
This commit is contained in:
Vishnu Nair
2021-10-12 09:05:58 -07:00
parent 304d678097
commit 1cc70404b1
5 changed files with 13 additions and 15 deletions

View File

@@ -241,7 +241,8 @@ public final class SurfaceControl implements Parcelable {
private static native void nativeRemoveJankDataListener(long nativeListener);
private static native long nativeCreateJankDataListenerWrapper(OnJankDataListener listener);
private static native int nativeGetGPUContextPriority();
private static native void nativeSetTransformHint(long nativeObject, int transformHint);
private static native void nativeSetTransformHint(long nativeObject,
@SurfaceControl.BufferTransform int transformHint);
private static native int nativeGetTransformHint(long nativeObject);
private static native int nativeGetLayerId(long nativeObject);
@@ -3729,7 +3730,7 @@ public final class SurfaceControl implements Parcelable {
/**
* @hide
*/
public int getTransformHint() {
public @SurfaceControl.BufferTransform int getTransformHint() {
checkNotReleased();
return nativeGetTransformHint(mNativeObject);
}
@@ -3743,7 +3744,7 @@ public final class SurfaceControl implements Parcelable {
* with the same size.
* @hide
*/
public void setTransformHint(@Surface.Rotation int transformHint) {
public void setTransformHint(@SurfaceControl.BufferTransform int transformHint) {
nativeSetTransformHint(mNativeObject, transformHint);
}

View File

@@ -214,7 +214,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
final Rect mSurfaceFrame = new Rect();
int mLastSurfaceWidth = -1, mLastSurfaceHeight = -1;
int mTransformHint = 0;
@SurfaceControl.BufferTransform int mTransformHint = 0;
private boolean mGlobalListenersAdded;
private boolean mAttachedToWindow;

View File

@@ -314,7 +314,8 @@ public final class ViewRootImpl implements ViewParent,
private ArrayList<OnBufferTransformHintChangedListener> mTransformHintListeners =
new ArrayList<>();
private @Surface.Rotation int mPreviousTransformHint = Surface.ROTATION_0;
private @SurfaceControl.BufferTransform
int mPreviousTransformHint = SurfaceControl.BUFFER_TRANSFORM_IDENTITY;
/**
* Callback for notifying about global configuration changes.
*/
@@ -7872,8 +7873,7 @@ public final class ViewRootImpl implements ViewParent,
int transformHint = mSurfaceControl.getTransformHint();
if (mPreviousTransformHint != transformHint) {
mPreviousTransformHint = transformHint;
dispatchTransformHintChanged(
SurfaceControl.rotationToBufferTransform(transformHint));
dispatchTransformHintChanged(transformHint);
}
} else {
destroySurface();
@@ -10501,7 +10501,7 @@ public final class ViewRootImpl implements ViewParent,
@Override
public @SurfaceControl.BufferTransform int getBufferTransformHint() {
return SurfaceControl.rotationToBufferTransform(mSurfaceControl.getTransformHint());
return mSurfaceControl.getTransformHint();
}
@Override

View File

@@ -1815,16 +1815,12 @@ static void nativeSetTransformHint(JNIEnv* env, jclass clazz, jlong nativeSurfac
if (surface == nullptr) {
return;
}
surface->setTransformHint(
ui::Transform::toRotationFlags(static_cast<ui::Rotation>(transformHint)));
surface->setTransformHint(transformHint);
}
static jint nativeGetTransformHint(JNIEnv* env, jclass clazz, jlong nativeSurfaceControl) {
sp<SurfaceControl> surface(reinterpret_cast<SurfaceControl*>(nativeSurfaceControl));
ui::Transform::RotationFlags transformHintRotationFlags =
static_cast<ui::Transform::RotationFlags>(surface->getTransformHint());
return toRotationInt(ui::Transform::toRotation((transformHintRotationFlags)));
return surface->getTransformHint();
}
static jint nativeGetLayerId(JNIEnv* env, jclass clazz, jlong nativeSurfaceControl) {

View File

@@ -2472,7 +2472,8 @@ public class WindowManagerService extends IWindowManager.Stub
if (isPrimaryDisplay) {
transformHint = (transformHint + mPrimaryDisplayOrientation) % 4;
}
outSurfaceControl.setTransformHint(transformHint);
outSurfaceControl.setTransformHint(
SurfaceControl.rotationToBufferTransform(transformHint));
ProtoLog.v(WM_DEBUG_ORIENTATION,
"Passing transform hint %d for window %s%s",
transformHint, win,