1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Now touching the .update file in the video directory after removing deleted recordings

This commit is contained in:
Klaus Schmidinger 2019-03-19 16:02:28 +01:00
parent dd13070260
commit b83d29764e
2 changed files with 19 additions and 10 deletions

View File

@ -9390,3 +9390,6 @@ Video Disk Recorder Revision History
- Fixed updating the cursor position when switching channels with the Channel+/- keys - Fixed updating the cursor position when switching channels with the Channel+/- keys
while the Channels menu is open. while the Channels menu is open.
- Fixed handling shared CA pids (thanks to Onur Sentürk). - Fixed handling shared CA pids (thanks to Onur Sentürk).
- Now touching the .update file in the video directory after removing deleted
recordings, so that other VDRs that use the same video directory will update their
list of (deleted) recordings and thus won't display too much empty disk space.

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: recording.c 4.23 2019/03/17 16:01:13 kls Exp $ * $Id: recording.c 4.24 2019/03/19 15:56:58 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -99,27 +99,33 @@ void cRemoveDeletedRecordingsThread::Action(void)
if (LockFile.Lock()) { if (LockFile.Lock()) {
time_t StartTime = time(NULL); time_t StartTime = time(NULL);
bool deleted = false; bool deleted = false;
bool interrupted = false;
LOCK_DELETEDRECORDINGS_WRITE; LOCK_DELETEDRECORDINGS_WRITE;
for (cRecording *r = DeletedRecordings->First(); r; ) { for (cRecording *r = DeletedRecordings->First(); r; ) {
if (cIoThrottle::Engaged()) if (cIoThrottle::Engaged())
return; interrupted = true;
if (time(NULL) - StartTime > MAXREMOVETIME) else if (time(NULL) - StartTime > MAXREMOVETIME)
return; // don't stay here too long interrupted = true; // don't stay here too long
if (cRemote::HasKeys()) else if (cRemote::HasKeys())
return; // react immediately on user input interrupted = true; // react immediately on user input
if (interrupted)
break;
if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) { if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) {
cRecording *next = DeletedRecordings->Next(r); cRecording *next = DeletedRecordings->Next(r);
r->Remove(); r->Remove();
DeletedRecordings->Del(r); DeletedRecordings->Del(r);
r = next; r = next;
deleted = true; deleted = true;
continue;
} }
r = DeletedRecordings->Next(r); else
r = DeletedRecordings->Next(r);
} }
if (deleted) { if (deleted) {
const char *IgnoreFiles[] = { SORTMODEFILE, TIMERRECFILE, NULL }; cRecordings::TouchUpdate();
cVideoDirectory::RemoveEmptyVideoDirectories(IgnoreFiles); if (!interrupted) {
const char *IgnoreFiles[] = { SORTMODEFILE, TIMERRECFILE, NULL };
cVideoDirectory::RemoveEmptyVideoDirectories(IgnoreFiles);
}
} }
} }
} }