NuPlayerRenderer: stop feeding AudioSink when paused.
NuPlayerDriver: current position is updated only in running state.
Bug: 17141882
Change-Id: Ia88551cc29ef8f0e7ef0600a214feb5633389b6e
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index bf6b3df..49941f8 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -315,7 +315,7 @@
size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) {
Mutex::Autolock autoLock(mLock);
- if (!offloadingAudio()) {
+ if (!offloadingAudio() || mPaused) {
return 0;
}
@@ -887,6 +887,7 @@
++mAudioQueueGeneration;
++mVideoQueueGeneration;
prepareForMediaRenderingStart();
+ mPaused = true;
}
mDrainAudioQueuePending = false;
@@ -898,8 +899,6 @@
ALOGV("now paused audio queue has %d entries, video has %d entries",
mAudioQueue.size(), mVideoQueue.size());
-
- mPaused = true;
}
void NuPlayer::Renderer::onResume() {
@@ -911,9 +910,9 @@
mAudioSink->start();
}
+ Mutex::Autolock autoLock(mLock);
mPaused = false;
- Mutex::Autolock autoLock(mLock);
if (!mAudioQueue.empty()) {
postDrainAudioQueue_l();
}