Merge "Restore setCropInTransaction HiddenForCrop behavior." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
938a70142e
@@ -1289,10 +1289,14 @@ class WindowStateAnimator {
|
|||||||
void updateSurfaceWindowCrop(Rect clipRect, Rect finalClipRect, boolean recoveringMemory) {
|
void updateSurfaceWindowCrop(Rect clipRect, Rect finalClipRect, boolean recoveringMemory) {
|
||||||
if (DEBUG_WINDOW_CROP) Slog.d(TAG, "updateSurfaceWindowCrop: win=" + mWin
|
if (DEBUG_WINDOW_CROP) Slog.d(TAG, "updateSurfaceWindowCrop: win=" + mWin
|
||||||
+ " clipRect=" + clipRect + " finalClipRect=" + finalClipRect);
|
+ " clipRect=" + clipRect + " finalClipRect=" + finalClipRect);
|
||||||
|
if (clipRect != null) {
|
||||||
if (!clipRect.equals(mLastClipRect)) {
|
if (!clipRect.equals(mLastClipRect)) {
|
||||||
mLastClipRect.set(clipRect);
|
mLastClipRect.set(clipRect);
|
||||||
mSurfaceController.setCropInTransaction(clipRect, recoveringMemory);
|
mSurfaceController.setCropInTransaction(clipRect, recoveringMemory);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
mSurfaceController.clearCropInTransaction(recoveringMemory);
|
||||||
|
}
|
||||||
if (!finalClipRect.equals(mLastFinalClipRect)) {
|
if (!finalClipRect.equals(mLastFinalClipRect)) {
|
||||||
mLastFinalClipRect.set(finalClipRect);
|
mLastFinalClipRect.set(finalClipRect);
|
||||||
mSurfaceController.setFinalCropInTransaction(finalClipRect);
|
mSurfaceController.setFinalCropInTransaction(finalClipRect);
|
||||||
@@ -1480,14 +1484,16 @@ class WindowStateAnimator {
|
|||||||
mSurfaceController.setPositionAppliesWithResizeInTransaction(true);
|
mSurfaceController.setPositionAppliesWithResizeInTransaction(true);
|
||||||
mSurfaceController.forceScaleableInTransaction(false);
|
mSurfaceController.forceScaleableInTransaction(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rect clipRect = mTmpClipRect;
|
||||||
if (w.inPinnedWorkspace()) {
|
if (w.inPinnedWorkspace()) {
|
||||||
mTmpClipRect.set(0, 0, -1, -1);
|
clipRect = null;
|
||||||
task.mStack.getDimBounds(mTmpFinalClipRect);
|
task.mStack.getDimBounds(mTmpFinalClipRect);
|
||||||
mTmpFinalClipRect.inset(-w.mAttrs.surfaceInsets.left, -w.mAttrs.surfaceInsets.top,
|
mTmpFinalClipRect.inset(-w.mAttrs.surfaceInsets.left, -w.mAttrs.surfaceInsets.top,
|
||||||
-w.mAttrs.surfaceInsets.right, -w.mAttrs.surfaceInsets.bottom);
|
-w.mAttrs.surfaceInsets.right, -w.mAttrs.surfaceInsets.bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateSurfaceWindowCrop(mTmpClipRect, mTmpFinalClipRect, recoveringMemory);
|
updateSurfaceWindowCrop(clipRect, mTmpFinalClipRect, recoveringMemory);
|
||||||
|
|
||||||
mSurfaceController.setMatrixInTransaction(mDsDx * w.mHScale * mExtraHScale,
|
mSurfaceController.setMatrixInTransaction(mDsDx * w.mHScale * mExtraHScale,
|
||||||
mDtDx * w.mVScale * mExtraVScale,
|
mDtDx * w.mVScale * mExtraVScale,
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ class WindowSurfaceController {
|
|||||||
if (SHOW_TRANSACTIONS) logSurface(
|
if (SHOW_TRANSACTIONS) logSurface(
|
||||||
"CROP " + clipRect.toShortString(), null);
|
"CROP " + clipRect.toShortString(), null);
|
||||||
try {
|
try {
|
||||||
if (clipRect.width() != 0 && clipRect.height() != 0) {
|
if (clipRect.width() > 0 && clipRect.height() > 0) {
|
||||||
mSurfaceControl.setWindowCrop(clipRect);
|
mSurfaceControl.setWindowCrop(clipRect);
|
||||||
mHiddenForCrop = false;
|
mHiddenForCrop = false;
|
||||||
updateVisibility();
|
updateVisibility();
|
||||||
@@ -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) {
|
void setFinalCropInTransaction(Rect clipRect) {
|
||||||
if (SHOW_TRANSACTIONS) logSurface(
|
if (SHOW_TRANSACTIONS) logSurface(
|
||||||
"FINAL CROP " + clipRect.toShortString(), null);
|
"FINAL CROP " + clipRect.toShortString(), null);
|
||||||
|
|||||||
Reference in New Issue
Block a user