diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 3e7fea2ac203c..54ab906e99247 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -4807,7 +4807,11 @@ class DisplayContent extends WindowContainer extends ConfigurationContainer< */ private boolean mCommittedReparentToAnimationLeash; + private MagnificationSpec mLastMagnificationSpec; + WindowContainer(WindowManagerService wms) { mWmService = wms; mPendingTransaction = wms.mTransactionFactory.make(); @@ -1186,6 +1188,7 @@ class WindowContainer extends ConfigurationContainer< if (shouldMagnify()) { t.setMatrix(mSurfaceControl, spec.scale, 0, 0, spec.scale) .setPosition(mSurfaceControl, spec.offsetX, spec.offsetY); + mLastMagnificationSpec = spec; } else { for (int i = 0; i < mChildren.size(); i++) { mChildren.get(i).applyMagnificationSpec(t, spec); @@ -1193,6 +1196,17 @@ class WindowContainer extends ConfigurationContainer< } } + void clearMagnificationSpec(Transaction t) { + if (mLastMagnificationSpec != null) { + t.setMatrix(mSurfaceControl, 1, 0, 0, 1) + .setPosition(mSurfaceControl, 0, 0); + } + mLastMagnificationSpec = null; + for (int i = 0; i < mChildren.size(); i++) { + mChildren.get(i).clearMagnificationSpec(t); + } + } + void prepareSurfaces() { // If a leash has been set when the transaction was committed, then the leash reparent has // been committed.