Properly send a MEDIA_SEEK_COMPLETE notification for a seek request while paused (legacy behaviour).

Change-Id: I64da5eb97c75b269b4668b3628ed0f05f2e36e51
related-to-bug: 2557482
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 842176e..27add0a 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -395,6 +395,7 @@
     mVideoTimeUs = 0;
 
     mSeeking = false;
+    mSeekNotificationSent = false;
     mSeekTimeUs = 0;
 
     mUri.setTo("");
@@ -686,11 +687,20 @@
 
 status_t AwesomePlayer::seekTo_l(int64_t timeUs) {
     mSeeking = true;
+    mSeekNotificationSent = false;
     mSeekTimeUs = timeUs;
     mFlags &= ~AT_EOS;
 
     seekAudioIfNecessary_l();
 
+    if (!(mFlags & PLAYING)) {
+        LOGV("seeking while paused, sending SEEK_COMPLETE notification"
+             " immediately.");
+
+        notifyListener_l(MEDIA_SEEK_COMPLETE);
+        mSeekNotificationSent = true;
+    }
+
     return OK;
 }
 
@@ -701,6 +711,7 @@
         mWatchForAudioSeekComplete = true;
         mWatchForAudioEOS = true;
         mSeeking = false;
+        mSeekNotificationSent = false;
     }
 }
 
@@ -869,7 +880,7 @@
             mAudioPlayer->seekTo(timeUs);
             mWatchForAudioSeekComplete = true;
             mWatchForAudioEOS = true;
-        } else {
+        } else if (!mSeekNotificationSent) {
             // If we're playing video only, report seek complete now,
             // otherwise audio player will notify us later.
             notifyListener_l(MEDIA_SEEK_COMPLETE);
@@ -877,6 +888,7 @@
 
         mFlags |= FIRST_FRAME;
         mSeeking = false;
+        mSeekNotificationSent = false;
     }
 
     if (mFlags & FIRST_FRAME) {
@@ -984,7 +996,11 @@
 
     if (mWatchForAudioSeekComplete && !mAudioPlayer->isSeeking()) {
         mWatchForAudioSeekComplete = false;
-        notifyListener_l(MEDIA_SEEK_COMPLETE);
+
+        if (!mSeekNotificationSent) {
+            notifyListener_l(MEDIA_SEEK_COMPLETE);
+            mSeekNotificationSent = true;
+        }
     }
 
     status_t finalStatus;
diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h
index c985dff..9e8a674 100644
--- a/media/libstagefright/include/AwesomePlayer.h
+++ b/media/libstagefright/include/AwesomePlayer.h
@@ -132,6 +132,7 @@
     int64_t mVideoTimeUs;
 
     bool mSeeking;
+    bool mSeekNotificationSent;
     int64_t mSeekTimeUs;
 
     bool mWatchForAudioSeekComplete;