diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-09-12 13:47:31 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2011-09-12 13:47:31 -0700 |
commit | d02a9e95f4cf6295f1a060b4e31c6fbe41123649 (patch) | |
tree | c96a43a4921ccd5826b914608fe7d74e1c360256 /services/java | |
parent | d61a3a1bed57fc33fb0fa132521746bb58bba6be (diff) | |
download | frameworks_base-d02a9e95f4cf6295f1a060b4e31c6fbe41123649.zip frameworks_base-d02a9e95f4cf6295f1a060b4e31c6fbe41123649.tar.gz frameworks_base-d02a9e95f4cf6295f1a060b4e31c6fbe41123649.tar.bz2 |
Get rid of some animation flickers and other bad things.
Change-Id: If7606286bf0bd01cf023d57719ccb27e39d5564c
Diffstat (limited to 'services/java')
-rw-r--r-- | services/java/com/android/server/wm/DimSurface.java | 6 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/services/java/com/android/server/wm/DimSurface.java b/services/java/com/android/server/wm/DimSurface.java index d7bb8b3..dc6cc0d 100644 --- a/services/java/com/android/server/wm/DimSurface.java +++ b/services/java/com/android/server/wm/DimSurface.java @@ -53,19 +53,22 @@ class DimSurface { void show(int dw, int dh, int layer, int color) { if (!mDimShown) { if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, " DIM " + mDimSurface + ": SHOW pos=(0,0) (" + - dw + "x" + dh + ")"); + dw + "x" + dh + " layer=" + layer + ")"); mDimShown = true; try { mLastDimWidth = dw; mLastDimHeight = dh; mDimSurface.setPosition(0, 0); mDimSurface.setSize(dw, dh); + mDimSurface.setLayer(layer); mDimSurface.show(); } catch (RuntimeException e) { Slog.w(WindowManagerService.TAG, "Failure showing dim surface", e); } } else if (mLastDimWidth != dw || mLastDimHeight != dh || mDimColor != color || mLayer != layer) { + if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, " DIM " + mDimSurface + ": pos=(0,0) (" + + dw + "x" + dh + " layer=" + layer + ")"); mLastDimWidth = dw; mLastDimHeight = dh; mLayer = layer; @@ -80,6 +83,7 @@ class DimSurface { if (mDimShown) { mDimShown = false; try { + if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, " HIDE " + mDimSurface); mDimSurface.hide(); } catch (RuntimeException e) { Slog.w(WindowManagerService.TAG, "Illegal argument exception hiding dim surface"); diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index df9698e..5a7fc9f 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -7458,9 +7458,12 @@ public class WindowManagerService extends IWindowManager.Stub windowDetachedWallpaper = w; } if (w.mAnimation.getBackgroundColor() != 0) { - windowAnimationBackground = w; - windowAnimationBackgroundColor = - w.mAnimation.getBackgroundColor(); + if (windowAnimationBackground == null || w.mAnimLayer < + windowAnimationBackground.mAnimLayer) { + windowAnimationBackground = w; + windowAnimationBackgroundColor = + w.mAnimation.getBackgroundColor(); + } } } animating = true; @@ -7469,14 +7472,18 @@ public class WindowManagerService extends IWindowManager.Stub // If this window's app token is running a detached wallpaper // animation, make a note so we can ensure the wallpaper is // displayed behind it. - if (w.mAppToken != null && w.mAppToken.animation != null) { + if (w.mAppToken != null && w.mAppToken.animation != null + && w.mAppToken.animating) { if (w.mAppToken.animation.getDetachWallpaper()) { windowDetachedWallpaper = w; } if (w.mAppToken.animation.getBackgroundColor() != 0) { - windowAnimationBackground = w; - windowAnimationBackgroundColor = - w.mAppToken.animation.getBackgroundColor(); + if (windowAnimationBackground == null || w.mAnimLayer < + windowAnimationBackground.mAnimLayer) { + windowAnimationBackground = w; + windowAnimationBackgroundColor = + w.mAppToken.animation.getBackgroundColor(); + } } } |