Hi,
beim Anschauen des Codes ist mir aufgefallen, dass VDR das mit
--record
übergebene Script manchmal aufruft, während ein LOCK_RECORDINGS_WRITE gesetzt ist. Dieser LOCK wird erst wieder freigegeben, wenn das Script beendet ist.
Vermutlich ist das in der Praxis kein Problem, aber ich dachte, ich schreibe es auf mal auf. Falls es doch zu einem Problem führt. Betroffen sind: "copying", "copied" und "moved".
Hier noch der relevante Code:
recording.c, void cRecordingsHandler::Action(void):
Code
void cRecordingsHandler::Action(void)
{
while (Running()) {
bool Sleep = false;
{
LOCK_RECORDINGS_WRITE;
Recordings->SetExplicitModify();
cMutexLock MutexLock(&mutex);
if (cRecordingsHandlerEntry *r = operations.First()) {
if (!r->Active(Recordings)) {
error |= r->Error();
r->Cleanup(Recordings);
operations.Del(r);
}
else
Sleep = true;
}
else
break;
}
...
}
Alles anzeigen
und in bool cRecordingsHandlerEntry::Active(cRecordings *Recordings):
Code
#define RUC_COPYINGRECORDING "copying"
#define RUC_COPIEDRECORDING "copied"
#define RUC_MOVEDRECORDING "moved"
...
cRecordingUserCommand::InvokeCommand(RUC_COPYINGRECORDING, FileNameDst(), FileNameSrc());
...
cRecordingUserCommand::InvokeCommand(RUC_COPIEDRECORDING, FileNameDst(), FileNameSrc());
...
cRecordingUserCommand::InvokeCommand(RUC_MOVEDRECORDING, FileNameDst(), FileNameSrc());
...
~ Markus