summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY5
-rw-r--r--svdrp.c13
3 files changed, 18 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 4fb011f9..1875defc 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2854,6 +2854,7 @@ Johann Friedrichs <johann.friedrichs@web.de>
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 <timolavi@mbnet.fi>
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());
}