diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java index 79f05a3caa93f..eedf958822944 100644 --- a/core/java/android/app/WindowConfiguration.java +++ b/core/java/android/app/WindowConfiguration.java @@ -851,15 +851,6 @@ public class WindowConfiguration implements Parcelable, ComparabledetachChildren(ctrl); } -static void nativeSetOverrideScalingMode(JNIEnv* env, jclass clazz, jlong transactionObj, - jlong nativeObject, - jint scalingMode) { - auto transaction = reinterpret_cast(transactionObj); - - auto ctrl = reinterpret_cast(nativeObject); - transaction->setOverrideScalingMode(ctrl, scalingMode); -} - static jobject nativeGetHdrCapabilities(JNIEnv* env, jclass clazz, jobject tokenObject) { sp token(ibinderForJavaObject(env, tokenObject)); if (token == NULL) return NULL; @@ -1694,8 +1685,6 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeReparent }, {"nativeSeverChildren", "(JJ)V", (void*)nativeSeverChildren } , - {"nativeSetOverrideScalingMode", "(JJI)V", - (void*)nativeSetOverrideScalingMode }, {"nativeCaptureDisplay", "(Landroid/view/SurfaceControl$DisplayCaptureArgs;Landroid/view/SurfaceControl$ScreenCaptureListener;)I", (void*)nativeCaptureDisplay }, diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index 25732e7f0d995..7ed22a1f7777e 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -203,16 +203,14 @@ class ScreenRotationAnimation { .setCallsite("ScreenRotationAnimation") .build(); - // In case display bounds change, screenshot buffer and surface may mismatch so set a - // scaling mode. - SurfaceControl.Transaction t2 = mService.mTransactionFactory.get(); - t2.setOverrideScalingMode(mScreenshotLayer, Surface.SCALING_MODE_SCALE_TO_WINDOW); - t2.apply(true /* sync */); - // Capture a screenshot into the surface we just created. final int displayId = displayContent.getDisplayId(); final Surface surface = mService.mSurfaceFactory.get(); + // In case display bounds change, screenshot buffer and surface may mismatch so set a + // scaling mode. surface.copyFrom(mScreenshotLayer); + surface.setScalingMode(Surface.SCALING_MODE_SCALE_TO_WINDOW); + SurfaceControl.ScreenshotHardwareBuffer screenshotBuffer = mService.mDisplayManagerInternal.systemScreenshot(displayId); if (screenshotBuffer != null) { diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 249fe031b7571..0077182c46de1 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1474,14 +1474,6 @@ class Task extends WindowContainer { // Update task bounds if needed. adjustBoundsForDisplayChangeIfNeeded(getDisplayContent()); - if (getWindowConfiguration().windowsAreScaleable()) { - // We force windows out of SCALING_MODE_FREEZE so that we can continue to animate them - // while a resize is pending. - forceWindowsScaleable(true /* force */); - } else { - forceWindowsScaleable(false /* force */); - } - mRootWindowContainer.updateUIDsPresentOnDisplay(); // Resume next focusable stack after reparenting to another display if we aren't removing @@ -3780,17 +3772,6 @@ class Task extends WindowContainer { positionChildAt(position, child, false /* includeParents */); } - void forceWindowsScaleable(boolean force) { - mWmService.openSurfaceTransaction(); - try { - for (int i = mChildren.size() - 1; i >= 0; i--) { - mChildren.get(i).forceWindowsScaleableInTransaction(force); - } - } finally { - mWmService.closeSurfaceTransaction("forceWindowsScaleable"); - } - } - void setTaskDescription(TaskDescription taskDescription) { mTaskDescription = taskDescription; } diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 95d86621c5416..0edaa1d821df4 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -861,13 +861,6 @@ class WindowContainer extends ConfigurationContainer< } } - void forceWindowsScaleableInTransaction(boolean force) { - for (int i = mChildren.size() - 1; i >= 0; --i) { - final WindowContainer wc = mChildren.get(i); - wc.forceWindowsScaleableInTransaction(force); - } - } - /** * @return {@code true} when an application can override an app transition animation on this * container. diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 0b53bf6ca8f60..3b79241a3c3e7 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2172,16 +2172,7 @@ class WindowState extends WindowContainer implements WindowManagerP } } - @Override - void forceWindowsScaleableInTransaction(boolean force) { - if (mWinAnimator != null && mWinAnimator.hasSurface()) { - mWinAnimator.mSurfaceController.forceScaleableInTransaction(force); - } - - super.forceWindowsScaleableInTransaction(force); - } - - @Override + @Override void removeImmediately() { super.removeImmediately(); diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index f3429769893fb..6349e6d36ae1c 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -971,10 +971,6 @@ class WindowStateAnimator { * @return Returns true if the surface was successfully shown. */ private boolean showSurfaceRobustlyLocked() { - if (mWin.getWindowConfiguration().windowsAreScaleable()) { - mSurfaceController.forceScaleableInTransaction(true); - } - boolean shown = mSurfaceController.showRobustlyInTransaction(); if (!shown) return false; diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java index cbe0a4232c973..d2c36e2bf347d 100644 --- a/services/core/java/com/android/server/wm/WindowSurfaceController.java +++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java @@ -342,11 +342,9 @@ class WindowSurfaceController { return false; } - void forceScaleableInTransaction(boolean force) { - // -1 means we don't override the default or client specified - // scaling mode. - int scalingMode = force ? SCALING_MODE_SCALE_TO_WINDOW : -1; - mSurfaceControl.setOverrideScalingMode(scalingMode); + void deferTransactionUntil(SurfaceControl barrier, long frame) { + // TODO: Logging + mSurfaceControl.deferTransactionUntil(barrier, frame); } boolean clearWindowContentFrameStats() { diff --git a/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java b/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java index d0a5644f50252..ecbfac8b091b8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java +++ b/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java @@ -162,12 +162,6 @@ public class StubTransaction extends SurfaceControl.Transaction { return this; } - @Override - public SurfaceControl.Transaction setOverrideScalingMode(SurfaceControl sc, - int overrideScalingMode) { - return this; - } - @Override public SurfaceControl.Transaction setColor(SurfaceControl sc, float[] color) { return this;