Fix a bug that a FSD that finished all loops is not marked as stopped (isRunning returns true after it stops).

bug:30142379

Also use the new constant in the loop check and make it safer.

Change-Id: Id36f813fcf717607ccee5be89588d688f48f58d9
diff --git a/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java b/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
index 3342429..cc17c73 100644
--- a/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
+++ b/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
@@ -231,9 +231,13 @@
         }
     };
 
-    private Runnable mCallbackRunnable = new Runnable() {
+    private Runnable mFinishedCallbackRunnable = new Runnable() {
         @Override
         public void run() {
+            synchronized (mLock) {
+                mNextFrameToDecode = -1;
+                mState = 0;
+            }
             if (mOnFinishedListener != null) {
                 mOnFinishedListener.onFinished(FrameSequenceDrawable.this);
             }
@@ -386,8 +390,8 @@
                 boolean continueLooping = true;
                 if (mNextFrameToDecode == mFrameSequence.getFrameCount() - 1) {
                     mCurrentLoop++;
-                    if ((mLoopBehavior == LOOP_ONCE && mCurrentLoop == mLoopCount) ||
-                            (mLoopBehavior == LOOP_DEFAULT && mCurrentLoop == mFrameSequence.getDefaultLoopCount())) {
+                    if ((mLoopBehavior == LOOP_FINITE && mCurrentLoop >= mLoopCount) ||
+                            (mLoopBehavior == LOOP_DEFAULT && mCurrentLoop >= mFrameSequence.getDefaultLoopCount())) {
                         continueLooping = false;
                     }
                 }
@@ -395,7 +399,7 @@
                 if (continueLooping) {
                     scheduleDecodeLocked();
                 } else {
-                    scheduleSelf(mCallbackRunnable, 0);
+                    scheduleSelf(mFinishedCallbackRunnable, 0);
                 }
             }
         }