1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed replay stuttering close to the end of an ongoing recording

This commit is contained in:
Klaus Schmidinger 2012-12-23 13:32:26 +01:00
parent ea951daa44
commit d6efa529c9
3 changed files with 8 additions and 3 deletions

View File

@ -1453,6 +1453,7 @@ Andreas Regel <andreas.regel@gmx.de>
for making cDevice::AddPid() store the stream type of the given pid for making cDevice::AddPid() store the stream type of the given pid
for adding cFont::FontName() and cFont::Size() for adding cFont::FontName() and cFont::Size()
for writing the dvbhddevice plugin for writing the dvbhddevice plugin
for reporting replay stuttering close to the end of an ongoing recording
Thomas Bergwinkl <Thomas.Bergwinkl@vr-web.de> Thomas Bergwinkl <Thomas.Bergwinkl@vr-web.de>
for fixing the validity check for channel IDs, because some providers use TIDs for fixing the validity check for channel IDs, because some providers use TIDs

View File

@ -7454,3 +7454,5 @@ Video Disk Recorder Revision History
mcRecordingInfo, mcPluginSetup, mcSetupOsd, mcSetupEpg, mcSetupDvb, mcSetupLnb, mcRecordingInfo, mcPluginSetup, mcSetupOsd, mcSetupEpg, mcSetupDvb, mcSetupLnb,
mcSetupCam, mcSetupRecord, mcSetupReplay, mcSetupMisc and mcSetupPlugins. mcSetupCam, mcSetupRecord, mcSetupReplay, mcSetupMisc and mcSetupPlugins.
- Updated the Italian OSD texts (thanks to Diego Pierotto). - Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed replay stuttering close to the end of an ongoing recording (reported by Andreas
Regel).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: recording.c 2.78 2012/12/06 09:35:13 kls Exp $ * $Id: recording.c 2.79 2012/12/23 13:30:37 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -1824,7 +1824,9 @@ bool cIndexFile::CatchUp(int Index)
// returns true unless something really goes wrong, so that 'index' becomes NULL // returns true unless something really goes wrong, so that 'index' becomes NULL
if (index && f >= 0) { if (index && f >= 0) {
cMutexLock MutexLock(&mutex); cMutexLock MutexLock(&mutex);
for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index > last); i++) { // Note that CatchUp() is triggered even if Index is 'last' (and thus valid).
// This is done to make absolutely sure we don't miss any data at the very end.
for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index >= last); i++) {
struct stat buf; struct stat buf;
if (fstat(f, &buf) == 0) { if (fstat(f, &buf) == 0) {
if (!IsInIndexList(this)) { if (!IsInIndexList(this)) {
@ -1869,7 +1871,7 @@ bool cIndexFile::CatchUp(int Index)
} }
else else
LOG_ERROR_STR(*fileName); LOG_ERROR_STR(*fileName);
if (Index <= last) if (Index < last)
break; break;
cCondWait::SleepMs(1000); cCondWait::SleepMs(1000);
} }