NuPlayer: do not send BUFFERING_START to client when paused by client.
Bug: 25727912
Change-Id: I5f82090352a3d6806f1f8fafbdb2a3bf0be48be7
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 5c13633..765ceff 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -191,7 +191,8 @@
mResetting(false),
mSourceStarted(false),
mPaused(false),
- mPausedByClient(false),
+ mPausedByClient(true),
+ mPendingBufferingFlag(PENDING_BUFFERING_FLAG_NONE),
mPausedForBuffering(false) {
clearFlushComplete();
}
@@ -715,6 +716,10 @@
onStart();
}
mPausedByClient = false;
+ if (mPendingBufferingFlag != PENDING_BUFFERING_FLAG_NONE) {
+ notifyListener(MEDIA_INFO, mPendingBufferingFlag, 0);
+ mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE;
+ }
break;
}
@@ -2147,7 +2152,12 @@
case Source::kWhatBufferingStart:
{
- notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_START, 0);
+ if (mPausedByClient) {
+ mPendingBufferingFlag = PENDING_BUFFERING_FLAG_START;
+ } else {
+ notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_START, 0);
+ mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE;
+ }
break;
}
@@ -2169,7 +2179,12 @@
case Source::kWhatBufferingEnd:
{
- notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0);
+ if (mPausedByClient) {
+ mPendingBufferingFlag = PENDING_BUFFERING_FLAG_END;
+ } else {
+ notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0);
+ mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE;
+ }
break;
}