Merge \"Restore setCropInTransaction HiddenForCrop behavior.\" into nyc-dev

am: 938a70142e

Change-Id: Ica7e5c31c1c08f9424b5eb44ab843c3ce2526914
This commit is contained in:
Robert Carr
2016-06-11 01:36:14 +00:00
committed by android-build-merger
2 changed files with 26 additions and 6 deletions

View File

@@ -1289,9 +1289,13 @@ 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.equals(mLastClipRect)) {
mLastClipRect.set(clipRect);
mSurfaceController.setCropInTransaction(clipRect, recoveringMemory);
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);
@@ -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,

View File

@@ -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();
@@ -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);