diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | dvbplayer.c | 17 |
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' @@ -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; |