diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2011-04-17 13:22:44 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2011-04-17 13:22:44 +0200 |
commit | 5138ccc1ce2708f4db5ca274c4d6696f64901e35 (patch) | |
tree | da39442d79fcf4d8eca0b69d0827bc83bb0e7c93 | |
parent | 8e3c9f553fd2b39007dd0066b2f88ac6d953755e (diff) | |
download | vdr-5138ccc1ce2708f4db5ca274c4d6696f64901e35.tar.gz vdr-5138ccc1ce2708f4db5ca274c4d6696f64901e35.tar.bz2 |
Added a patch from Udo Richter
-rw-r--r-- | CONTRIBUTORS | 2 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | recording.c | 20 | ||||
-rw-r--r-- | recording.h | 3 |
4 files changed, 13 insertions, 14 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c5999624..2bf22521 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1691,6 +1691,8 @@ Udo Richter <udo_richter@gmx.de> for reporting missing defines for large files in the 'newplugin' script for pointing out that the full timer file name should be displayed if it ends with "TITLE" or "EPISODE" + for a patch to "Made updating the editing marks during replay react faster in case + the marks file has just been written" Sven Kreiensen <svenk@kammer.uni-hannover.de> for his help in keeping 'channels.conf.terr' up to date @@ -6565,7 +6565,7 @@ Video Disk Recorder Revision History - Fixed detecting frames on channels that broadcast with separate "fields" instead of complete frames. - Made updating the editing marks during replay react faster in case the marks - file has just been written. + file has just been written (with a patch from Udo Richter). - Fixed horizontal scaling of subtitles (reported by Reinhard Nissl). - Stripped the note "The data returned by this function is only used for informational purposes (if any)" from the description of cDevice::GetVideoSize(). The VideoAspect diff --git a/recording.c b/recording.c index ca8d6380..518325de 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 2.28 2011/03/27 15:02:53 kls Exp $ + * $Id: recording.c 2.29 2011/04/17 13:20:46 kls Exp $ */ #include "recording.h" @@ -1274,6 +1274,7 @@ bool cMarks::Load(const char *RecordingFileName, double FramesPerSecond, bool Is framesPerSecond = FramesPerSecond; nextUpdate = 0; lastFileTime = -1; // the first call to Load() must take place! + lastChange = 0; return Update(); } @@ -1282,16 +1283,9 @@ bool cMarks::Update(void) time_t t = time(NULL); if (t > nextUpdate) { time_t LastModified = LastModifiedTime(fileName); - int d; - if (LastModified > 0) // the file exists - d = t - LastModified; - else { // the file doesn't exist - if (lastFileTime <= 0) { - lastFileTime = t - 2; // -2 makes sure we don't miss an update within the very same second - LastModified = t; // make sure we run into the actual Load() below - } - d = t - lastFileTime; - } + if (LastModified != lastFileTime) // change detected, or first run + lastChange = LastModified > 0 ? LastModified : t; + int d = t - lastChange; if (d < 60) d = 1; // check frequently if the file has just been modified else if (d < 3600) @@ -1299,8 +1293,10 @@ bool cMarks::Update(void) else d /= 360; // phase out checking for very old files nextUpdate = t + d; - if (LastModified > lastFileTime) { + if (LastModified != lastFileTime) { // change detected, or first run lastFileTime = LastModified; + if (lastFileTime == t) + lastFileTime--; // make sure we don't miss updates in the remaining second cMutexLock MutexLock(&MutexMarkFramesPerSecond); MarkFramesPerSecond = framesPerSecond; if (cConfig<cMark>::Load(fileName)) { diff --git a/recording.h b/recording.h index 3410ae23..8ec7f49e 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 2.18 2011/04/03 11:14:37 kls Exp $ + * $Id: recording.h 2.19 2011/04/17 13:18:04 kls Exp $ */ #ifndef __RECORDING_H @@ -194,6 +194,7 @@ private: double framesPerSecond; time_t nextUpdate; time_t lastFileTime; + time_t lastChange; public: bool Load(const char *RecordingFileName, double FramesPerSecond = DEFAULTFRAMESPERSECOND, bool IsPesRecording = false); bool Update(void); |