summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2019-03-19 16:02:28 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2019-03-19 16:02:28 +0100
commitb83d29764e1832d1a81a03903afba5dc437445f7 (patch)
treee1f3868b2549713334d1925bd554b0ff3e0379f2
parentdd130702600da855d3a726c1612c25311bb741b5 (diff)
downloadvdr-b83d29764e1832d1a81a03903afba5dc437445f7.tar.gz
vdr-b83d29764e1832d1a81a03903afba5dc437445f7.tar.bz2
Now touching the .update file in the video directory after removing deleted recordings
-rw-r--r--HISTORY3
-rw-r--r--recording.c26
2 files changed, 19 insertions, 10 deletions
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);
+ }
}
}
}