diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2017-11-12 13:13:06 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2017-11-12 13:13:06 +0100 |
commit | 8dcff164fa3374fa88263d6b11b33fa48d30dade (patch) | |
tree | cf1c6dabe5b1161677d2cf137e1d193d7796af5a | |
parent | 54b721ebde9c3735a322f13f0e6e7ca24f0c1794 (diff) | |
download | vdr-8dcff164fa3374fa88263d6b11b33fa48d30dade.tar.gz vdr-8dcff164fa3374fa88263d6b11b33fa48d30dade.tar.bz2 |
Fixed handling timers during the change from DST to winter time
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | timers.c | 21 |
3 files changed, 17 insertions, 9 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 0711b5bf..6ea191ea 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2839,6 +2839,7 @@ Johann Friedrichs <johann.friedrichs@web.de> be an abandoned member of class cSchedulesLock for fixing handling VPS events outside the LingerLimit, which could cause recordings to stop prematurely + for fixing handling timers during the change from DST to winter time Timo Helkio <timolavi@mbnet.fi> for reporting a hangup when replaying a TS recording with subtitles activated @@ -9162,7 +9162,7 @@ Video Disk Recorder Revision History a subdirectory. - SVDRP peering can now be limited to the default SVDRP host (see MANUAL for details). -2017-11-11: Version 2.3.9 +2017-11-12: Version 2.3.9 - Updated the Italian OSD texts (thanks to Diego Pierotto). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). @@ -9199,3 +9199,5 @@ Video Disk Recorder Revision History - The new SVDRP commands 'LSTD' and 'PRIM' can be used to list all available devices and to switch the primary device (thanks to Thomas Reufer). - Added some comments regarding font height (thanks to Thomas Reufer). +- Fixed handling timers during the change from DST to winter time (thanks to Johann + Friedrichs). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.c 4.13 2017/11/09 12:10:46 kls Exp $ + * $Id: timers.c 4.14 2017/11/12 13:01:22 kls Exp $ */ #include "timers.h" @@ -419,20 +419,25 @@ bool cTimer::Matches(time_t t, bool Directly, int Margin) const t = time(NULL); int begin = TimeToInt(start); // seconds from midnight - int length = TimeToInt(stop) - begin; - if (length < 0) - length += SECSINDAY; + int end = TimeToInt(stop); + int length = end - begin; if (IsSingleEvent()) { - startTime = SetTime(day, begin); - stopTime = startTime + length; + time_t t0 = day; + startTime = SetTime(t0, begin); + if (length < 0) + t0 = IncDay(day, 1); + stopTime = SetTime(t0, end); } else { + time_t d = day ? max(day, t) : t; for (int i = -1; i <= 7; i++) { - time_t t0 = IncDay(day ? max(day, t) : t, i); + time_t t0 = IncDay(d, i); if (DayMatches(t0)) { time_t a = SetTime(t0, begin); - time_t b = a + length; + if (length < 0) + t0 = IncDay(d, i + 1); + time_t b = SetTime(t0, end); if ((!day || a >= day) && t < b) { startTime = a; stopTime = b; |