summaryrefslogtreecommitdiffstats
path: root/services/java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-09-12 13:47:31 -0700
committerDianne Hackborn <hackbod@google.com>2011-09-12 13:47:31 -0700
commitd02a9e95f4cf6295f1a060b4e31c6fbe41123649 (patch)
treec96a43a4921ccd5826b914608fe7d74e1c360256 /services/java
parentd61a3a1bed57fc33fb0fa132521746bb58bba6be (diff)
downloadframeworks_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.java6
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java21
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();
+ }
}
}