diff --git a/HISTORY b/HISTORY index 5ca03181..b862a0d9 100644 --- a/HISTORY +++ b/HISTORY @@ -9390,3 +9390,6 @@ Video Disk Recorder Revision History - Fixed updating the cursor position when switching channels with the Channel+/- keys while the Channels menu is open. - 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. diff --git a/recording.c b/recording.c index 63f6a860..4742921d 100644 --- a/recording.c +++ b/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 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" @@ -99,27 +99,33 @@ void cRemoveDeletedRecordingsThread::Action(void) if (LockFile.Lock()) { time_t StartTime = time(NULL); bool deleted = false; + bool interrupted = false; LOCK_DELETEDRECORDINGS_WRITE; for (cRecording *r = DeletedRecordings->First(); r; ) { if (cIoThrottle::Engaged()) - return; - if (time(NULL) - StartTime > MAXREMOVETIME) - return; // don't stay here too long - if (cRemote::HasKeys()) - return; // react immediately on user input + interrupted = true; + else if (time(NULL) - StartTime > MAXREMOVETIME) + interrupted = true; // don't stay here too long + else if (cRemote::HasKeys()) + interrupted = true; // react immediately on user input + if (interrupted) + break; if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) { cRecording *next = DeletedRecordings->Next(r); r->Remove(); DeletedRecordings->Del(r); r = next; deleted = true; - continue; } - r = DeletedRecordings->Next(r); + else + r = DeletedRecordings->Next(r); } if (deleted) { - const char *IgnoreFiles[] = { SORTMODEFILE, TIMERRECFILE, NULL }; - cVideoDirectory::RemoveEmptyVideoDirectories(IgnoreFiles); + cRecordings::TouchUpdate(); + if (!interrupted) { + const char *IgnoreFiles[] = { SORTMODEFILE, TIMERRECFILE, NULL }; + cVideoDirectory::RemoveEmptyVideoDirectories(IgnoreFiles); + } } } }