From 73db0d802ee4e1355d400329084eee6f5cff02a3 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Fri, 16 Sep 2011 01:09:40 -0700 Subject: [PATCH] "Fix" issue #5276520: Noise on edges of rotation animation I have no shame. Change-Id: I9f40df670bba0f848097aad8afb978a29e42f85a --- .../java/com/android/server/wm/WindowState.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 0ee3f17129f60..197abdee0693c 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -1101,7 +1101,20 @@ final class WindowState implements WindowManagerPolicy.WindowState { final Matrix tmpMatrix = mTmpMatrix; // Compute the desired transformation. - tmpMatrix.setTranslate(0, 0); + if (screenAnimation) { + // If we are doing a screen animation, the global rotation + // applied to windows can result in windows that are carefully + // aligned with each other to slightly separate, allowing you + // to see what is behind them. An unsightly mess. This... + // thing... magically makes it call good: scale each window + // slightly (two pixels larger in each dimension, from the + // window's center). + final float w = frame.width(); + final float h = frame.height(); + tmpMatrix.setScale(1 + 2/w, 1 + 2/h, w/2, h/2); + } else { + tmpMatrix.reset(); + } tmpMatrix.postScale(mGlobalScale, mGlobalScale); if (selfTransformation) { tmpMatrix.postConcat(mTransformation.getMatrix());