From d84ec07ff67f259c17462f7aa7a5c489e5f05713 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Thu, 19 Apr 2018 09:45:08 +0200 Subject: [PATCH] Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT --- CONTRIBUTORS | 1 + HISTORY | 5 +++++ svdrp.c | 13 ++++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4fb011f9..1875defc 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2854,6 +2854,7 @@ Johann Friedrichs replay has been stopped, but before the replay control has been destroyed for reporting a problem in processing SVDRP client responses in case the caller doesn't want the actual response strings + for reporting a bug in handling the tfRecording flag in the SVDRP commands MODT and UPDT Timo Helkio for reporting a hangup when replaying a TS recording with subtitles activated diff --git a/HISTORY b/HISTORY index d477dd58..4010cefc 100644 --- a/HISTORY +++ b/HISTORY @@ -9347,3 +9347,8 @@ Video Disk Recorder Revision History - Fixed a high CPU load during replay with active progress display (reported by Matthias Senzel). - Official release. + +2018-04-19: Version 2.4.1 + +- Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported + by Johann Friedrichs). diff --git a/svdrp.c b/svdrp.c index 0f56d10f..823f23e1 100644 --- a/svdrp.c +++ b/svdrp.c @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 4.37 2018/03/19 12:16:33 kls Exp $ + * $Id: svdrp.c 4.38 2018/04/19 09:45:08 kls Exp $ */ #include "svdrp.h" @@ -2036,6 +2036,7 @@ void cSVDRPServer::CmdMODT(const char *Option) LOCK_TIMERS_WRITE; Timers->SetExplicitModify(); if (cTimer *Timer = Timers->GetById(Id)) { + bool IsRecording = Timer->HasFlags(tfRecording); cTimer t = *Timer; if (strcasecmp(tail, "ON") == 0) t.SetFlags(tfActive); @@ -2046,6 +2047,10 @@ void cSVDRPServer::CmdMODT(const char *Option) return; } *Timer = t; + if (IsRecording) + Timer->SetFlags(tfRecording); + else + Timer->ClrFlags(tfRecording); Timers->SetModified(); isyslog("SVDRP %s < %s modified timer %s (%s)", Setup.SVDRPHostName, *clientName, *Timer->ToDescr(), Timer->HasFlags(tfActive) ? "active" : "inactive"); Reply(250, "%d %s", Timer->Id(), *Timer->ToText(true)); @@ -2478,12 +2483,18 @@ void cSVDRPServer::CmdUPDT(const char *Option) if (Timer->Parse(Option)) { LOCK_TIMERS_WRITE; if (cTimer *t = Timers->GetTimer(Timer)) { + bool IsRecording = t->HasFlags(tfRecording); t->Parse(Option); delete Timer; Timer = t; + if (IsRecording) + Timer->SetFlags(tfRecording); + else + Timer->ClrFlags(tfRecording); isyslog("SVDRP %s < %s updated timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr()); } else { + Timer->ClrFlags(tfRecording); Timers->Add(Timer); isyslog("SVDRP %s < %s added timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr()); }