@@ -1408,9 +1408,9 @@ private void performTraversals() {
1408
1408
1409
1409
final int surfaceGenerationId = mSurface .getGenerationId ();
1410
1410
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 ;
1414
1414
}
1415
1415
1416
1416
if (DEBUG_LAYOUT ) Log .v (TAG , "relayout: frame=" + frame .toShortString ()
@@ -3798,6 +3798,9 @@ protected int onProcess(QueuedInputEvent q) {
3798
3798
if (q .mEvent instanceof KeyEvent ) {
3799
3799
return processKeyEvent (q );
3800
3800
} else {
3801
+ // If delivering a new non-key event, make sure the window is
3802
+ // now allowed to start updating.
3803
+ handleDispatchDoneAnimating ();
3801
3804
final int source = q .mEvent .getSource ();
3802
3805
if ((source & InputDevice .SOURCE_CLASS_POINTER ) != 0 ) {
3803
3806
return processPointerEvent (q );
@@ -3812,6 +3815,12 @@ protected int onProcess(QueuedInputEvent q) {
3812
3815
private int processKeyEvent (QueuedInputEvent q ) {
3813
3816
final KeyEvent event = (KeyEvent )q .mEvent ;
3814
3817
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
+
3815
3824
// Deliver the key to the view hierarchy.
3816
3825
if (mView .dispatchKeyEvent (event )) {
3817
3826
return FINISH_HANDLED ;
0 commit comments