Now writing the info file before attaching the recorder to the device, to make sure it is present when the recorder needs to update the fps value

This commit is contained in:
Klaus Schmidinger 2018-03-08 17:03:51 +01:00
parent 746ce7d406
commit 1275de1b07
2 changed files with 5 additions and 3 deletions

View File

@ -9300,3 +9300,5 @@ Video Disk Recorder Revision History
all remote VDRs. all remote VDRs.
- Fixed removing a cStateKey from a cStateLock (setting StateKey.stateLock = NULL was - Fixed removing a cStateKey from a cStateLock (setting StateKey.stateLock = NULL was
done too late, after the lock had already been released). done too late, after the lock had already been released).
- Now writing the info file before attaching the recorder to the device, to make sure it
is present when the recorder needs to update the fps value.

6
menu.c
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: menu.c 4.66 2018/03/05 15:37:23 kls Exp $ * $Id: menu.c 4.67 2018/03/08 17:02:56 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -5233,17 +5233,17 @@ cRecordControl::cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer,
cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName); cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName);
isyslog("record %s", fileName); isyslog("record %s", fileName);
if (MakeDirs(fileName, true)) { if (MakeDirs(fileName, true)) {
Recording.WriteInfo(); // we write this *before* attaching the recorder to the device, to make sure the info file is present when the recorder needs to update the fps value!
const cChannel *ch = timer->Channel(); const cChannel *ch = timer->Channel();
recorder = new cRecorder(fileName, ch, timer->Priority()); recorder = new cRecorder(fileName, ch, timer->Priority());
if (device->AttachReceiver(recorder)) { if (device->AttachReceiver(recorder)) {
Recording.WriteInfo();
cStatus::MsgRecording(device, Recording.Name(), Recording.FileName(), true); cStatus::MsgRecording(device, Recording.Name(), Recording.FileName(), true);
if (!Timer && !LastReplayed) // an instant recording, maybe from cRecordControls::PauseLiveVideo() if (!Timer && !LastReplayed) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
cReplayControl::SetRecording(fileName); cReplayControl::SetRecording(fileName);
SchedulesStateKey.Remove(); SchedulesStateKey.Remove();
LOCK_RECORDINGS_WRITE; LOCK_RECORDINGS_WRITE;
Recordings->AddByName(fileName);
SetRecordingTimerId(fileName, cString::sprintf("%d@%s", timer->Id(), Setup.SVDRPHostName)); SetRecordingTimerId(fileName, cString::sprintf("%d@%s", timer->Id(), Setup.SVDRPHostName));
Recordings->AddByName(fileName);
return; return;
} }
else else