All pastes #1769861 Raw Edit

Untitled

public text v1 · immutable
#1769861 ·published 2010-01-28 21:28 UTC
rendered paste body
Index: 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;
 }