2011/3/14 Markus Ehrnsperger <markus.ehrnsperger@xxxxxxxxxxxxxx>: >>> Hi, >>> >>> I have a suggestion: Treat the VPS margin the same way as the time a >>> non VPS timer will start before the EPG event starts. Example: >>> >>> Tagesschau, starts at 8:00 PM. >>> >>> If I don't use VPS, I will create a timer at 7:58 PM (in case the news >>> start slightly before 8) >>> If I use VPS, I will create a timer at 8:00 PM. The VPS margin is 2 >>> minutes (in this example). >>> >>> >>> If I don't use VPS, another recording (with lower priority) will be >>> stopped at 7.58 PM. The timer will start recording. >>> If I use VPS, another recording (with lower priority) will be stopped >>> at 7.58 PM (my suggestion). The next two minutes, the device will be >>> used for VPS checking only. The recording will start at 8:00 PM. >>> >>> Of course, this might look like wasting a device for two minutes only >>> to check the VPS. On the other side, not using VPS is even worse: I >>> will waste the device and disk space. So, using VPS is still better. >>> And, the timer with lower priority has lower priority by purpose. So, >>> I want it to be interrupted. >>> >>> Summary: >>> I suggest to use GetDevice as soon as the timer is within the VPS margin. >>> This has the following advantages: >>> - Easy to implement >>> - Easy to understand for users, and expected behavior: The timer with >>> higher priority has higher priority :) . >>> - No rocket science >>> >>> I admit, it has some disadvantages. But, from my point of view, these >>> are minor compared to the advantages. At the moment, I can use VPS >>> only with care as I might miss a recording with very high priority. >>> >>> Markus >> >> Please provide a (tested) patch that implements this. >> >> Klaus >> > Hi, > > I attach a simple patch. I tried it out and it works for me. Any > comments are very welkome. > > - Markus Second try, this time with the patch attached (hopefully)
diff --git a/vdr.c b/vdr.c index 34560e7..c47cf90 100644 --- a/vdr.c +++ b/vdr.c @@ -891,7 +891,10 @@ int main(int argc, char *argv[]) if (!d->Receiving() && d->ProvidesTransponder(Timer->Channel()) && Now - DeviceUsed[d->DeviceNumber()] > TIMERDEVICETIMEOUT) Device = d; // use the actual device as a last resort } - // Switch the device to the transponder: + if (!Device && InVpsMargin && !DeviceAvailable) { + Device = cDevice::GetDevice(Timer->Channel(), Timer->Priority(), false); + } + // Switch the device to the transponder: if (Device) { if (!Device->IsTunedToTransponder(Timer->Channel())) { if (Device == cDevice::ActualDevice() && !Device->IsPrimaryDevice())
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr