rendered paste bodyIndex: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.cpp (revision 23345)
+++ libs/libmythtv/NuppelVideoPlayer.cpp (working copy)
@@ -611,7 +611,7 @@
{
prebuffering = prebuffer;
audio_lock.lock();
- if (audioOutput && !paused)
+ if (audioOutput && !paused && !audio_paused)
{
if (prebuffering)
audioOutput->Pause(prebuffering);
@@ -2687,7 +2687,7 @@
audio_lock.lock();
if (!player_ctx->buffer->InDVDMenuOrStillFrame() &&
- !audio_paused && audioOutput)
+ !audio_paused && audioOutput && !paused)
{
if (prebuffering)
audioOutput->Pause(prebuffering);
@@ -2910,8 +2910,11 @@
// NB This should probably be locked via audio_lock but doing so
// here causes significant playback problems
- if (audioOutput && !audio_paused && audioOutput->IsPaused())
+ if (audioOutput && ffrew_skip == 1 && !paused && audioOutput->IsPaused())
+ {
audioOutput->Pause(false);
+ audio_paused = false;
+ }
AVSync();
@@ -4353,6 +4356,12 @@
if (videosync != NULL)
videosync->SetFrameInterval(frame_interval, m_double_framerate);
+ audio_lock.lock();
+ audioOutput->Pause(true);
+ audio_paused = true;
+ audio_lock.unlock();
+
+
VERBOSE(VB_PLAYBACK, LOC + "DoPause() -- setting paused");
paused = actuallypaused = true;
decoderThreadPaused.wakeAll();
@@ -4459,6 +4468,19 @@
audio_lock.unlock();
}
+ audio_lock.lock();
+ if (ffrew_skip == 1)
+ {
+ audioOutput->Pause(false);
+ audio_paused = false;
+ }
+ else
+ {
+ audioOutput->Pause(true);
+ audio_paused = true;
+ }
+ audio_lock.unlock();
+
VERBOSE(VB_PLAYBACK, LOC + "DoPlay() -- setting unpaused");
paused = actuallypaused = false;
}