Skip to content

Commit ef53fcc

Browse files
Dianne HackbornAndroid (Google) Code Review
Dianne Hackborn
authored and
Android (Google) Code Review
committed
Merge "Fix issue #11199654: Action bar enter animation skips frames when cleared by the system" into klp-dev
2 parents 103a734 + 021d243 commit ef53fcc

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

core/java/android/view/ViewRootImpl.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1408,9 +1408,9 @@ private void performTraversals() {
14081408

14091409
final int surfaceGenerationId = mSurface.getGenerationId();
14101410
relayoutResult = relayoutWindow(params, viewVisibility, insetsPending);
1411-
if (!mDrawDuringWindowsAnimating) {
1412-
mWindowsAnimating |=
1413-
(relayoutResult & WindowManagerGlobal.RELAYOUT_RES_ANIMATING) != 0;
1411+
if (!mDrawDuringWindowsAnimating &&
1412+
(relayoutResult & WindowManagerGlobal.RELAYOUT_RES_ANIMATING) != 0) {
1413+
mWindowsAnimating = true;
14141414
}
14151415

14161416
if (DEBUG_LAYOUT) Log.v(TAG, "relayout: frame=" + frame.toShortString()
@@ -3798,6 +3798,9 @@ protected int onProcess(QueuedInputEvent q) {
37983798
if (q.mEvent instanceof KeyEvent) {
37993799
return processKeyEvent(q);
38003800
} else {
3801+
// If delivering a new non-key event, make sure the window is
3802+
// now allowed to start updating.
3803+
handleDispatchDoneAnimating();
38013804
final int source = q.mEvent.getSource();
38023805
if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) {
38033806
return processPointerEvent(q);
@@ -3812,6 +3815,12 @@ protected int onProcess(QueuedInputEvent q) {
38123815
private int processKeyEvent(QueuedInputEvent q) {
38133816
final KeyEvent event = (KeyEvent)q.mEvent;
38143817

3818+
if (event.getAction() != KeyEvent.ACTION_UP) {
3819+
// If delivering a new key event, make sure the window is
3820+
// now allowed to start updating.
3821+
handleDispatchDoneAnimating();
3822+
}
3823+
38153824
// Deliver the key to the view hierarchy.
38163825
if (mView.dispatchKeyEvent(event)) {
38173826
return FINISH_HANDLED;

services/java/com/android/server/wm/WindowManagerService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3014,7 +3014,7 @@ public int relayoutWindow(Session session, IWindow client, int seq,
30143014
TAG, "Relayout of " + win + ": focusMayChange=" + focusMayChange);
30153015

30163016
inTouchMode = mInTouchMode;
3017-
animating = mAnimator.mAnimating;
3017+
animating = mAnimator.mAnimating && win.mWinAnimator.isAnimating();
30183018
if (animating && !mRelayoutWhileAnimating.contains(win)) {
30193019
mRelayoutWhileAnimating.add(win);
30203020
}

0 commit comments

Comments
 (0)