From 5cd7945ab5ed051e17097d30e8b1f6c11d656567 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 3 Feb 2006 15:25:51 +0100 Subject: [PATCH] Fixed handling "pending" timers that blocked others that actually could record --- CONTRIBUTORS | 2 ++ HISTORY | 2 ++ timers.c | 11 ++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index dcfc1849..851cbae0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -844,6 +844,8 @@ Ludwig Nussel Thomas Koch for his support in keeping the Premiere World channels up to date in 'channels.conf' for implementing the SVDRP command STAT + for reporting a problem with "pending" timers that blocked others that actually + could record Stefan Hußfeldt for his help in keeping 'channels.conf.cable' up to date diff --git a/HISTORY b/HISTORY index 2a0c9def..aa7e138e 100644 --- a/HISTORY +++ b/HISTORY @@ -4278,3 +4278,5 @@ Video Disk Recorder Revision History - Fixed setting "No title" for broken event data (reported by Ronny Kornexl). - Fixed channel up/down switching on single card systems (reported by Stefan Huelswitt). +- Fixed handling "pending" timers that blocked others that actually could record + (reported by Thomas Koch). diff --git a/timers.c b/timers.c index ab426802..e5b9ea61 100644 --- a/timers.c +++ b/timers.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.c 1.45 2006/01/28 15:09:05 kls Exp $ + * $Id: timers.c 1.46 2006/02/03 15:20:14 kls Exp $ */ #include "timers.h" @@ -535,13 +535,22 @@ cTimer *cTimers::GetTimer(cTimer *Timer) cTimer *cTimers::GetMatch(time_t t) { + static int LastPending = -1; cTimer *t0 = NULL; for (cTimer *ti = First(); ti; ti = Next(ti)) { if (!ti->Recording() && ti->Matches(t)) { + if (ti->Pending()) { + if (ti->Index() > LastPending) + LastPending = ti->Index(); + else + continue; + } if (!t0 || ti->Priority() > t0->Priority()) t0 = ti; } } + if (!t0) + LastPending = -1; return t0; }