mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Now checking for '.timer' file to determine whether a recording is still active
This commit is contained in:
parent
786245efe5
commit
c8e4921a0a
6
HISTORY
6
HISTORY
@ -9780,7 +9780,7 @@ Video Disk Recorder Revision History
|
||||
out by Onur Sentürk).
|
||||
- Official release.
|
||||
|
||||
2022-11-04:
|
||||
2022-11-06:
|
||||
|
||||
- Added UPDATE-2.6.0, which was missing in the official 2.6.0 release.
|
||||
- Fixed unexpected calls of the '-r' script when a recording is interrupted and
|
||||
@ -9788,3 +9788,7 @@ Video Disk Recorder Revision History
|
||||
- Now dropping capabilities after opening terminal.
|
||||
- Now assuming the lock when removing deleted recordings even if the disk is full
|
||||
(reported by Claus Muus).
|
||||
- When checking whether a recording is still active, VDR no longer checks whether the
|
||||
index file is being written, but rather checks for the presence of a '.timer' file.
|
||||
The cutter now writes a dummy '.timer' file with timer ID '0' to make this work
|
||||
for recordings that are currently being edited.
|
||||
|
4
cutter.c
4
cutter.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: cutter.c 4.6 2018/01/18 12:19:31 kls Exp $
|
||||
* $Id: cutter.c 5.1 2022/11/06 11:25:13 kls Exp $
|
||||
*/
|
||||
|
||||
#include "cutter.h"
|
||||
@ -677,6 +677,7 @@ bool cCutter::Start(void)
|
||||
cRecordingUserCommand::InvokeCommand(RUC_EDITINGRECORDING, editedVersionName, originalVersionName);
|
||||
if (cVideoDirectory::RemoveVideoFile(editedVersionName) && MakeDirs(editedVersionName, true)) {
|
||||
Recording.WriteInfo(editedVersionName);
|
||||
SetRecordingTimerId(editedVersionName, cString::sprintf("%d@%s", 0, Setup.SVDRPHostName));
|
||||
cuttingThread = new cCuttingThread(originalVersionName, editedVersionName);
|
||||
return true;
|
||||
}
|
||||
@ -693,6 +694,7 @@ void cCutter::Stop(void)
|
||||
const char *Error = cuttingThread ? cuttingThread->Error() : NULL;
|
||||
delete cuttingThread;
|
||||
cuttingThread = NULL;
|
||||
SetRecordingTimerId(editedVersionName, NULL);
|
||||
if ((Interrupted || Error) && *editedVersionName) {
|
||||
if (Interrupted)
|
||||
isyslog("editing process has been interrupted");
|
||||
|
14
recording.c
14
recording.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.c 5.14 2022/01/24 10:44:21 kls Exp $
|
||||
* $Id: recording.c 5.15 2022/11/06 11:26:16 kls Exp $
|
||||
*/
|
||||
|
||||
#include "recording.h"
|
||||
@ -66,7 +66,6 @@
|
||||
#define DISKCHECKDELTA 100 // seconds between checks for free disk space
|
||||
#define REMOVELATENCY 10 // seconds to wait until next check after removing a file
|
||||
#define MARKSUPDATEDELTA 10 // seconds between checks for updating editing marks
|
||||
#define MININDEXAGE 3600 // seconds before an index file is considered no longer to be written
|
||||
#define MAXREMOVETIME 10 // seconds after which to return from removing deleted recordings
|
||||
|
||||
#define MAX_LINK_LEVEL 6
|
||||
@ -1351,6 +1350,11 @@ int cRecording::IsInUse(void) const
|
||||
return Use;
|
||||
}
|
||||
|
||||
static bool StillRecording(const char *Directory)
|
||||
{
|
||||
return access(AddDirectory(Directory, TIMERRECFILE), F_OK) == 0;
|
||||
}
|
||||
|
||||
void cRecording::ResetResume(void) const
|
||||
{
|
||||
resume = RESUME_NOT_INITIALIZED;
|
||||
@ -1360,7 +1364,7 @@ int cRecording::NumFrames(void) const
|
||||
{
|
||||
if (numFrames < 0) {
|
||||
int nf = cIndexFile::GetLength(FileName(), IsPesRecording());
|
||||
if (time(NULL) - LastModifiedTime(cIndexFile::IndexFileName(FileName(), IsPesRecording())) < MININDEXAGE)
|
||||
if (StillRecording(FileName()))
|
||||
return nf; // check again later for ongoing recordings
|
||||
numFrames = nf;
|
||||
}
|
||||
@ -1379,7 +1383,7 @@ int cRecording::FileSizeMB(void) const
|
||||
{
|
||||
if (fileSizeMB < 0) {
|
||||
int fs = DirSizeMB(FileName());
|
||||
if (time(NULL) - LastModifiedTime(cIndexFile::IndexFileName(FileName(), IsPesRecording())) < MININDEXAGE)
|
||||
if (StillRecording(FileName()))
|
||||
return fs; // check again later for ongoing recordings
|
||||
fileSizeMB = fs;
|
||||
}
|
||||
@ -2610,7 +2614,7 @@ cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, b
|
||||
}
|
||||
else if (isPesRecording)
|
||||
ConvertFromPes(index, size);
|
||||
if (!index || time(NULL) - buf.st_mtime >= MININDEXAGE) {
|
||||
if (!index || !StillRecording(FileName)) {
|
||||
close(f);
|
||||
f = -1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user