diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-07 14:47:02 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-07 14:47:02 +0100 |
commit | f7645402ffd4f79cc92278135bc29f1b477f3682 (patch) | |
tree | bb9925929824646304ab5933ddc24d0dc6cffc54 /dvbplayer.c | |
parent | a67fe0663d07a6e91bfe22f5a86ce73d73b17563 (diff) | |
download | vdr-f7645402ffd4f79cc92278135bc29f1b477f3682.tar.gz vdr-f7645402ffd4f79cc92278135bc29f1b477f3682.tar.bz2 |
Fixed resuming replay of PES recordings
Diffstat (limited to 'dvbplayer.c')
-rw-r--r-- | dvbplayer.c | 17 |
1 files changed, 13 insertions, 4 deletions
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; |