diff options
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; } |