summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY1
-rw-r--r--dvbplayer.c17
3 files changed, 15 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9dbe19e9..5444ddd5 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -696,6 +696,7 @@ Oliver Endriss <o.endriss@gmx.de>
Makefile
for helping to debug a problem with reduced number of retries in Transfer Mode on
SD-FF cards
+ for reporting a problem with resuming replay of PES recordings
Reinhard Walter Buchner <rw.buchner@freenet.de>
for adding some satellites to 'sources.conf'
diff --git a/HISTORY b/HISTORY
index 5ca52fb9..23d191d1 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7721,3 +7721,4 @@ Video Disk Recorder Revision History
"Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
- Fixed a possible deadlock when changing the audio track while replaying a recording.
+- Fixed resuming replay of PES recordings (reported by Oliver Endriss).
diff --git a/dvbplayer.c b/dvbplayer.c
index a4aa2dd7..9f4d97e6 100644
--- a/dvbplayer.c
+++ b/dvbplayer.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbplayer.c 2.33 2013/03/07 13:05:15 kls Exp $
+ * $Id: dvbplayer.c 2.34 2013/03/07 14:38:26 kls Exp $
*/
#include "dvbplayer.h"
@@ -33,6 +33,7 @@ private:
public:
cPtsIndex(void);
void Clear(void);
+ bool IsEmpty(void);
void Put(uint32_t Pts, int Index);
int FindIndex(uint32_t Pts);
};
@@ -49,6 +50,12 @@ void cPtsIndex::Clear(void)
w = r = 0;
}
+bool cPtsIndex::IsEmpty(void)
+{
+ cMutexLock MutexLock(&mutex);
+ return w == r;
+}
+
void cPtsIndex::Put(uint32_t Pts, int Index)
{
cMutexLock MutexLock(&mutex);
@@ -811,9 +818,11 @@ void cDvbPlayer::Goto(int Index, bool Still)
void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
{
if (playMode == pmPlay) {
- int Current, Total;
- if (GetIndex(Current, Total, true))
- Goto(Current);
+ if (!ptsIndex.IsEmpty()) {
+ int Current, Total;
+ if (GetIndex(Current, Total, true))
+ Goto(Current);
+ }
}
else if (playMode == pmPause)
resyncAfterPause = true;