Loading services/core/java/com/android/server/wm/WindowStateAnimator.java +11 −5 Original line number Diff line number Diff line Loading @@ -1289,10 +1289,14 @@ class WindowStateAnimator { void updateSurfaceWindowCrop(Rect clipRect, Rect finalClipRect, boolean recoveringMemory) { if (DEBUG_WINDOW_CROP) Slog.d(TAG, "updateSurfaceWindowCrop: win=" + mWin + " clipRect=" + clipRect + " finalClipRect=" + finalClipRect); if (clipRect != null) { if (!clipRect.equals(mLastClipRect)) { mLastClipRect.set(clipRect); mSurfaceController.setCropInTransaction(clipRect, recoveringMemory); } } else { mSurfaceController.clearCropInTransaction(recoveringMemory); } if (!finalClipRect.equals(mLastFinalClipRect)) { mLastFinalClipRect.set(finalClipRect); mSurfaceController.setFinalCropInTransaction(finalClipRect); Loading Loading @@ -1480,14 +1484,16 @@ class WindowStateAnimator { mSurfaceController.setPositionAppliesWithResizeInTransaction(true); mSurfaceController.forceScaleableInTransaction(false); } Rect clipRect = mTmpClipRect; if (w.inPinnedWorkspace()) { mTmpClipRect.set(0, 0, -1, -1); clipRect = null; task.mStack.getDimBounds(mTmpFinalClipRect); mTmpFinalClipRect.inset(-w.mAttrs.surfaceInsets.left, -w.mAttrs.surfaceInsets.top, -w.mAttrs.surfaceInsets.right, -w.mAttrs.surfaceInsets.bottom); } updateSurfaceWindowCrop(mTmpClipRect, mTmpFinalClipRect, recoveringMemory); updateSurfaceWindowCrop(clipRect, mTmpFinalClipRect, recoveringMemory); mSurfaceController.setMatrixInTransaction(mDsDx * w.mHScale * mExtraHScale, mDtDx * w.mVScale * mExtraVScale, Loading services/core/java/com/android/server/wm/WindowSurfaceController.java +15 −1 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ class WindowSurfaceController { if (SHOW_TRANSACTIONS) logSurface( "CROP " + clipRect.toShortString(), null); try { if (clipRect.width() != 0 && clipRect.height() != 0) { if (clipRect.width() > 0 && clipRect.height() > 0) { mSurfaceControl.setWindowCrop(clipRect); mHiddenForCrop = false; updateVisibility(); Loading @@ -203,6 +203,20 @@ class WindowSurfaceController { } } void clearCropInTransaction(boolean recoveringMemory) { if (SHOW_TRANSACTIONS) logSurface( "CLEAR CROP", null); try { Rect clipRect = new Rect(0, 0, -1, -1); mSurfaceControl.setWindowCrop(clipRect); } catch (RuntimeException e) { Slog.w(TAG, "Error setting clearing crop of " + this, e); if (!recoveringMemory) { mAnimator.reclaimSomeSurfaceMemory("crop", true); } } } void setFinalCropInTransaction(Rect clipRect) { if (SHOW_TRANSACTIONS) logSurface( "FINAL CROP " + clipRect.toShortString(), null); Loading Loading
services/core/java/com/android/server/wm/WindowStateAnimator.java +11 −5 Original line number Diff line number Diff line Loading @@ -1289,10 +1289,14 @@ class WindowStateAnimator { void updateSurfaceWindowCrop(Rect clipRect, Rect finalClipRect, boolean recoveringMemory) { if (DEBUG_WINDOW_CROP) Slog.d(TAG, "updateSurfaceWindowCrop: win=" + mWin + " clipRect=" + clipRect + " finalClipRect=" + finalClipRect); if (clipRect != null) { if (!clipRect.equals(mLastClipRect)) { mLastClipRect.set(clipRect); mSurfaceController.setCropInTransaction(clipRect, recoveringMemory); } } else { mSurfaceController.clearCropInTransaction(recoveringMemory); } if (!finalClipRect.equals(mLastFinalClipRect)) { mLastFinalClipRect.set(finalClipRect); mSurfaceController.setFinalCropInTransaction(finalClipRect); Loading Loading @@ -1480,14 +1484,16 @@ class WindowStateAnimator { mSurfaceController.setPositionAppliesWithResizeInTransaction(true); mSurfaceController.forceScaleableInTransaction(false); } Rect clipRect = mTmpClipRect; if (w.inPinnedWorkspace()) { mTmpClipRect.set(0, 0, -1, -1); clipRect = null; task.mStack.getDimBounds(mTmpFinalClipRect); mTmpFinalClipRect.inset(-w.mAttrs.surfaceInsets.left, -w.mAttrs.surfaceInsets.top, -w.mAttrs.surfaceInsets.right, -w.mAttrs.surfaceInsets.bottom); } updateSurfaceWindowCrop(mTmpClipRect, mTmpFinalClipRect, recoveringMemory); updateSurfaceWindowCrop(clipRect, mTmpFinalClipRect, recoveringMemory); mSurfaceController.setMatrixInTransaction(mDsDx * w.mHScale * mExtraHScale, mDtDx * w.mVScale * mExtraVScale, Loading
services/core/java/com/android/server/wm/WindowSurfaceController.java +15 −1 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ class WindowSurfaceController { if (SHOW_TRANSACTIONS) logSurface( "CROP " + clipRect.toShortString(), null); try { if (clipRect.width() != 0 && clipRect.height() != 0) { if (clipRect.width() > 0 && clipRect.height() > 0) { mSurfaceControl.setWindowCrop(clipRect); mHiddenForCrop = false; updateVisibility(); Loading @@ -203,6 +203,20 @@ class WindowSurfaceController { } } void clearCropInTransaction(boolean recoveringMemory) { if (SHOW_TRANSACTIONS) logSurface( "CLEAR CROP", null); try { Rect clipRect = new Rect(0, 0, -1, -1); mSurfaceControl.setWindowCrop(clipRect); } catch (RuntimeException e) { Slog.w(TAG, "Error setting clearing crop of " + this, e); if (!recoveringMemory) { mAnimator.reclaimSomeSurfaceMemory("crop", true); } } } void setFinalCropInTransaction(Rect clipRect) { if (SHOW_TRANSACTIONS) logSurface( "FINAL CROP " + clipRect.toShortString(), null); Loading