summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChet Haase <chet@google.com>2012-05-10 09:55:15 -0700
committerChet Haase <chet@google.com>2012-05-10 09:55:15 -0700
commit198e564c9a66010cfe93e0b1a75f84d696bda494 (patch)
tree96b60f91ca2de9ce8dce5ae8fd4cff647a724380
parent2f4b10e2d4320db490b03eb198ce034302ef00fc (diff)
downloadframeworks_base-198e564c9a66010cfe93e0b1a75f84d696bda494.zip
frameworks_base-198e564c9a66010cfe93e0b1a75f84d696bda494.tar.gz
frameworks_base-198e564c9a66010cfe93e0b1a75f84d696bda494.tar.bz2
Notify windows when window animations complete
Drawing in windows is suppressed during window animations, to make window animations smoother. This means that drawing activities that the activity requested are dropped on the floor. There is no call at the end of window animations to tell the windows that they may now draw, which leaves the windows and activities in an uncertain state, especially with respect to some of the dirty flags that we use internally to know when we have requested (and satisfied) invalidations on views. The fix is to notice, on the WindowManager side, when we've finished window animations and to schedule a traversal on the WindowManager, which will then send out appropriate messages to the affected windows. Issue #6461113 EventInfo is stuck in day view Change-Id: I364c9c472531c467d44801698cfb453970173bb3
-rw-r--r--services/java/com/android/server/wm/WindowAnimator.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index 5536559..87442df 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -454,6 +454,7 @@ public class WindowAnimator {
mPendingLayoutChanges = 0;
mCurrentTime = SystemClock.uptimeMillis();
mBulkUpdateParams = 0;
+ boolean wasAnimating = mAnimating;
mAnimating = false;
if (WindowManagerService.DEBUG_WINDOW_TRACE) {
Slog.i(TAG, "!!! animate: entry time=" + mCurrentTime);
@@ -509,6 +510,8 @@ public class WindowAnimator {
if (mAnimating) {
mService.scheduleAnimationLocked();
+ } else if (wasAnimating) {
+ mService.requestTraversalLocked();
}
if (WindowManagerService.DEBUG_WINDOW_TRACE) {
Slog.i(TAG, "!!! animate: exit mAnimating=" + mAnimating