Merge "Account for scaling of surfaceInset area in magnification." into nyc-mr1-dev
This commit is contained in:
@@ -926,6 +926,22 @@ class WindowStateAnimator {
|
||||
mPendingDestroySurface = null;
|
||||
}
|
||||
|
||||
void applyMagnificationSpec(MagnificationSpec spec, Matrix transform) {
|
||||
final int surfaceInsetLeft = mWin.mAttrs.surfaceInsets.left;
|
||||
final int surfaceInsetTop = mWin.mAttrs.surfaceInsets.top;
|
||||
|
||||
if (spec != null && !spec.isNop()) {
|
||||
float scale = spec.scale;
|
||||
transform.postScale(scale, scale);
|
||||
transform.postTranslate(spec.offsetX, spec.offsetY);
|
||||
|
||||
// As we are scaling the whole surface, to keep the content
|
||||
// in the same position we will also have to scale the surfaceInsets.
|
||||
transform.postTranslate(-(surfaceInsetLeft*scale - surfaceInsetLeft),
|
||||
-(surfaceInsetTop*scale - surfaceInsetTop));
|
||||
}
|
||||
}
|
||||
|
||||
void computeShownFrameLocked() {
|
||||
final boolean selfTransformation = mHasLocalTransformation;
|
||||
Transformation attachedTransformation =
|
||||
@@ -1016,10 +1032,7 @@ class WindowStateAnimator {
|
||||
if (mService.mAccessibilityController != null && displayId == DEFAULT_DISPLAY) {
|
||||
MagnificationSpec spec = mService.mAccessibilityController
|
||||
.getMagnificationSpecForWindowLocked(mWin);
|
||||
if (spec != null && !spec.isNop()) {
|
||||
tmpMatrix.postScale(spec.scale, spec.scale);
|
||||
tmpMatrix.postTranslate(spec.offsetX, spec.offsetY);
|
||||
}
|
||||
applyMagnificationSpec(spec, tmpMatrix);
|
||||
}
|
||||
|
||||
// "convert" it into SurfaceFlinger's format
|
||||
@@ -1118,10 +1131,7 @@ class WindowStateAnimator {
|
||||
tmpMatrix.setScale(mWin.mGlobalScale, mWin.mGlobalScale);
|
||||
tmpMatrix.postTranslate(frame.left + mWin.mXOffset, frame.top + mWin.mYOffset);
|
||||
|
||||
if (spec != null && !spec.isNop()) {
|
||||
tmpMatrix.postScale(spec.scale, spec.scale);
|
||||
tmpMatrix.postTranslate(spec.offsetX, spec.offsetY);
|
||||
}
|
||||
applyMagnificationSpec(spec, tmpMatrix);
|
||||
|
||||
tmpMatrix.getValues(tmpFloats);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user