summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/etc/services.core.protolog.json12
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java11
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java32
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfaceController.java8
4 files changed, 21 insertions, 42 deletions
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index 77fe717e2237..efeaf238ac84 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -193,6 +193,12 @@
"group": "WM_ERROR",
"at": "com\/android\/server\/wm\/WindowManagerService.java"
},
+ "-1906387645": {
+ "message": "SURFACE controller=%s alpha=%f HScale=%f, VScale=%f: %s",
+ "level": "INFO",
+ "group": "WM_SHOW_TRANSACTIONS",
+ "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
+ },
"-1905191109": {
"message": "SyncGroup %d: Finished!",
"level": "VERBOSE",
@@ -3283,12 +3289,6 @@
"group": "WM_DEBUG_ORIENTATION",
"at": "com\/android\/server\/wm\/ActivityRecord.java"
},
- "1747941491": {
- "message": "SURFACE controller=%s alpha=%f matrix=[%f*%f,%f*%f][%f*%f,%f*%f]: %s",
- "level": "INFO",
- "group": "WM_SHOW_TRANSACTIONS",
- "at": "com\/android\/server\/wm\/WindowStateAnimator.java"
- },
"1756082882": {
"message": "Orientation change skips hidden %s",
"level": "VERBOSE",
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index d5d7c0010850..d159c5950e31 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -5354,11 +5354,14 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
}
- private void updateGlobalScaleIfNeeded() {
- if (mLastGlobalScale != mGlobalScale) {
+ private void updateScaleIfNeeded() {
+ if (mLastGlobalScale != mGlobalScale || mLastHScale != mHScale ||
+ mLastVScale != mVScale ) {
getPendingTransaction().setMatrix(getSurfaceControl(),
- mGlobalScale, 0, 0, mGlobalScale);
+ mGlobalScale*mHScale, 0, 0, mGlobalScale*mVScale);
mLastGlobalScale = mGlobalScale;
+ mLastHScale = mHScale;
+ mLastVScale = mVScale;
}
}
@@ -5369,7 +5372,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
updateSurfacePositionNonOrganized();
// Send information to SufaceFlinger about the priority of the current window.
updateFrameRateSelectionPriorityIfNeeded();
- if (isVisibleRequested()) updateGlobalScaleIfNeeded();
+ if (isVisibleRequested()) updateScaleIfNeeded();
mWinAnimator.prepareSurfaceLocked(getSyncTransaction());
super.prepareSurfaces();
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index a527eab5c45b..ea3b0658c4d5 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -509,13 +509,6 @@ class WindowStateAnimator {
int yOffset = mYOffset;
if (!mIsWallpaper) {
mSurfaceController.setPosition(t, xOffset, yOffset);
- // Wallpaper is already updated above when calling setWallpaperPositionAndScale so
- // we only need to consider the non-wallpaper case here.
- mSurfaceController.setMatrix(t,
- w.mHScale,
- w.mVScale,
- w.mHScale,
- w.mVScale);
} else {
setWallpaperPositionAndScale(t, xOffset, yOffset, mWallpaperScale);
}
@@ -575,17 +568,12 @@ class WindowStateAnimator {
"Orientation change skips hidden %s", w);
}
} else if (mLastAlpha != mShownAlpha
- || w.mLastHScale != w.mHScale
- || w.mLastVScale != w.mVScale
|| mLastHidden) {
displayed = true;
mLastAlpha = mShownAlpha;
- w.mLastHScale = w.mHScale;
- w.mLastVScale = w.mVScale;
ProtoLog.i(WM_SHOW_TRANSACTIONS,
- "SURFACE controller=%s alpha=%f matrix=[%f*%f,%f*%f][%f*%f,%f*%f]: %s",
- mSurfaceController, mShownAlpha, w.mHScale, w.mVScale,
- w.mHScale, w.mVScale, w);
+ "SURFACE controller=%s alpha=%f HScale=%f, VScale=%f: %s",
+ mSurfaceController, mShownAlpha, w.mHScale, w.mVScale, w);
boolean prepared = true;
@@ -593,12 +581,7 @@ class WindowStateAnimator {
setWallpaperPositionAndScale(t, mXOffset, mYOffset, mWallpaperScale);
} else {
prepared =
- mSurfaceController.prepareToShowInTransaction(t, mShownAlpha,
- w.mHScale,
- w.mVScale,
- w.mHScale,
- w.mVScale
- );
+ mSurfaceController.prepareToShowInTransaction(t, mShownAlpha);
}
if (prepared && mDrawState == HAS_DRAWN) {
@@ -693,11 +676,10 @@ class WindowStateAnimator {
mSurfaceController.setPosition(t,mWin.mTmpMatrixArray[MTRANS_X],
mWin.mTmpMatrixArray[MTRANS_Y]);
- mSurfaceController.setMatrix(t,
- mWin.mTmpMatrixArray[MSCALE_X] * mWin.mHScale,
- mWin.mTmpMatrixArray[MSKEW_Y] * mWin.mVScale,
- mWin.mTmpMatrixArray[MSKEW_X] * mWin.mHScale,
- mWin.mTmpMatrixArray[MSCALE_Y] * mWin.mVScale);
+ mSurfaceController.setMatrix(t, mWin.mTmpMatrixArray[MSCALE_X],
+ mWin.mTmpMatrixArray[MSKEW_Y],
+ mWin.mTmpMatrixArray[MSKEW_X],
+ mWin.mTmpMatrixArray[MSCALE_Y]);
}
/**
diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java
index 636f0bb6086f..fa0d70833f65 100644
--- a/services/core/java/com/android/server/wm/WindowSurfaceController.java
+++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java
@@ -178,19 +178,13 @@ class WindowSurfaceController {
t.setMatrix(mSurfaceControl, dsdx, dtdx, dtdy, dsdy);
}
- boolean prepareToShowInTransaction(SurfaceControl.Transaction t, float alpha, float dsdx,
- float dtdx, float dsdy, float dtdy) {
+ boolean prepareToShowInTransaction(SurfaceControl.Transaction t, float alpha) {
if (mSurfaceControl == null) {
return false;
}
mSurfaceAlpha = alpha;
t.setAlpha(mSurfaceControl, alpha);
- mLastDsdx = dsdx;
- mLastDtdx = dtdx;
- mLastDsdy = dsdy;
- mLastDtdy = dtdy;
- t.setMatrix(mSurfaceControl, dsdx, dtdx, dsdy, dtdy);
return true;
}