summaryrefslogtreecommitdiffstats
path: root/services/java
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2012-04-11 09:25:53 -0700
committerCraig Mautner <cmautner@google.com>2012-04-11 09:25:53 -0700
commitf8d4fbb9c87201350534861c4d988e63691fe24f (patch)
treef665a4ac0261ed07b3e89c568771af26e81e2c88 /services/java
parentf0cabba38bcb1aefad191915e214e836fa5ed2bd (diff)
downloadframeworks_base-f8d4fbb9c87201350534861c4d988e63691fe24f.zip
frameworks_base-f8d4fbb9c87201350534861c4d988e63691fe24f.tar.gz
frameworks_base-f8d4fbb9c87201350534861c4d988e63691fe24f.tar.bz2
Check for existing dimming before stop dimming.
Add a test to make sure that we are dimming before we send the message to stop it. This prevents a CPU consuming loop when dimming is already on. Fixes bug 6320003. Change-Id: If26dc5b0800300d8e38c166824651223eded4cfa
Diffstat (limited to 'services/java')
-rw-r--r--services/java/com/android/server/wm/WindowAnimator.java6
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java22
2 files changed, 17 insertions, 11 deletions
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index 1198a77..0be6612 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -453,7 +453,7 @@ public class WindowAnimator {
mDimAnimator.updateParameters(mContext.getResources(), mDimParams, mCurrentTime);
}
if (mDimAnimator != null && mDimAnimator.mDimShown) {
- mAnimating |= mDimAnimator.updateSurface(mDimParams != null, mCurrentTime,
+ mAnimating |= mDimAnimator.updateSurface(isDimming(), mCurrentTime,
!mService.okToDisplay());
}
@@ -501,6 +501,10 @@ public class WindowAnimator {
mService.mH.sendMessage(mService.mH.obtainMessage(SET_DIM_PARAMETERS, null));
}
+ boolean isDimming() {
+ return mDimParams != null;
+ }
+
public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
if (mWindowDetachedWallpaper != null) {
pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper);
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 8d65dc3..d9425aa 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -8021,16 +8021,18 @@ public class WindowManagerService extends IWindowManager.Stub
if (!mInnerFields.mDimming) {
//Slog.i(TAG, "DIM BEHIND: " + w);
mInnerFields.mDimming = true;
- final int width, height;
- if (attrs.type == WindowManager.LayoutParams.TYPE_BOOT_PROGRESS) {
- width = mCurDisplayWidth;
- height = mCurDisplayHeight;
- } else {
- width = innerDw;
- height = innerDh;
+ if (!mAnimator.isDimming()) {
+ final int width, height;
+ if (attrs.type == WindowManager.LayoutParams.TYPE_BOOT_PROGRESS) {
+ width = mCurDisplayWidth;
+ height = mCurDisplayHeight;
+ } else {
+ width = innerDw;
+ height = innerDh;
+ }
+ mAnimator.startDimming(w.mWinAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
+ width, height);
}
- mAnimator.startDimming(w.mWinAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
- width, height);
}
}
}
@@ -8180,7 +8182,7 @@ public class WindowManagerService extends IWindowManager.Stub
updateWallpaperVisibilityLocked();
}
}
- if (!mInnerFields.mDimming && mAnimator.mDimParams != null) {
+ if (!mInnerFields.mDimming && mAnimator.isDimming()) {
mAnimator.stopDimming();
}
} catch (RuntimeException e) {