diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 63b164a6..15a605e3 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1069,8 +1069,6 @@ Rolf Ahrenberg for setting the thread name, so that it can be seen in 'top -H' for replacing the Finnish language code "smi" with "suo" for adding cap_sys_nice to the capabilities that are not dropped - for making VDR no longer check for deleted recordings to be removed from the - foreground thread, to avoid blocking the main loop for too long Ralf Klueber for reporting a bug in cutting a recording if there is only a single editing mark diff --git a/HISTORY b/HISTORY index ef35e15b..036b3745 100644 --- a/HISTORY +++ b/HISTORY @@ -6033,7 +6033,5 @@ Video Disk Recorder Revision History 2009-04-13: Version 1.7.6 -- No longer checking for deleted recordings to be removed from the foreground - thread, to avoid blocking the main loop for too long (thanks to Rolf Ahrenberg). - cDevice::PlayTs() now syncs on the TS packet sync bytes. - Made MAXFRAMESIZE a multiple of TS_SIZE to avoid breaking up TS packets. diff --git a/recording.c b/recording.c index 22df5b6c..00965a7d 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 2.10 2009/04/12 14:04:22 kls Exp $ + * $Id: recording.c 2.11 2009/04/13 12:28:36 kls Exp $ */ #include "recording.h" @@ -114,8 +114,15 @@ void RemoveDeletedRecordings(void) { static time_t LastRemoveCheck = 0; if (time(NULL) - LastRemoveCheck > REMOVECHECKDELTA) { - if (!RemoveDeletedRecordingsThread.Active()) - RemoveDeletedRecordingsThread.Start(); + if (!RemoveDeletedRecordingsThread.Active()) { + cThreadLock DeletedRecordingsLock(&DeletedRecordings); + for (cRecording *r = DeletedRecordings.First(); r; r = DeletedRecordings.Next(r)) { + if (r->deleted && time(NULL) - r->deleted > DELETEDLIFETIME) { + RemoveDeletedRecordingsThread.Start(); + break; + } + } + } LastRemoveCheck = time(NULL); } }