Fix multiple strokes support when fade is disabled.
Multiple strokes would always be accepted after the first one.
diff --git a/core/java/android/gesture/GestureOverlayView.java b/core/java/android/gesture/GestureOverlayView.java
index 1251964..0d0fbb5 100755
--- a/core/java/android/gesture/GestureOverlayView.java
+++ b/core/java/android/gesture/GestureOverlayView.java
@@ -96,6 +96,7 @@
     private boolean mPreviousWasGesturing = false;
     private boolean mInterceptEvents = true;
     private boolean mIsListeningForGestures;
+    private boolean mResetGesture;
 
     // current gesture
     private Gesture mCurrentGesture;
@@ -372,7 +373,9 @@
     private void clear(boolean animated, boolean fireActionPerformed) {
         setPaintAlpha(255);
         removeCallbacks(mFadingOut);
+        mResetGesture = false;
         mFadingOut.fireActionPerformed = fireActionPerformed;
+        mFadingOut.resetMultipleStrokes = false;
 
         if (animated && mCurrentGesture != null) {
             mFadingAlpha = 1.0f;
@@ -387,11 +390,14 @@
             mFadingHasStarted = false;
 
             if (fireActionPerformed) {
-                post(mFadingOut);
-            } else {
+                postDelayed(mFadingOut, mFadeOffset);
+            } else if (mHandleGestureActions) {
                 mCurrentGesture = null;
                 mPath.rewind();
                 invalidate();
+            } else if (mGestureStrokeType == GESTURE_STROKE_TYPE_MULTIPLE) {
+                mFadingOut.resetMultipleStrokes = true;
+                postDelayed(mFadingOut, mFadeOffset);
             }
         }
     }
@@ -507,8 +513,9 @@
         mTotalLength = 0;
         mIsGesturing = false;
 
-        if (mGestureStrokeType == GESTURE_STROKE_TYPE_SINGLE) {
+        if (mGestureStrokeType == GESTURE_STROKE_TYPE_SINGLE || mResetGesture) {
             if (mHandleGestureActions) setCurrentColor(mUncertainGestureColor);
+            mResetGesture = false;
             mCurrentGesture = null;
             mPath.rewind();
         } else if (mCurrentGesture == null || mCurrentGesture.getStrokesCount() == 0) {
@@ -640,9 +647,7 @@
                     listeners.get(i).onGestureEnded(this, event);
                 }
 
-                if (mHandleGestureActions) {
-                    clear(mFadeEnabled, mIsGesturing);
-                }
+                clear(mHandleGestureActions && mFadeEnabled, mHandleGestureActions && mIsGesturing);
             } else {
                 cancelGesture(event);
 
@@ -683,6 +688,7 @@
 
     private class FadeOutRunnable implements Runnable {
         boolean fireActionPerformed;
+        boolean resetMultipleStrokes;
 
         public void run() {
             if (mIsFadingOut) {
@@ -708,6 +714,8 @@
                     setPaintAlpha((int) (255 * mFadingAlpha));
                     postDelayed(this, FADE_ANIMATION_RATE);
                 }
+            } else if (resetMultipleStrokes) {
+                mResetGesture = true;
             } else {
                 fireOnGesturePerformed();