[Bug] VPS Recording not starting as long as another recording (with lower priority) is running
Commit Message
2011/3/14 Markus Ehrnsperger <markus.ehrnsperger@googlemail.com>:
>>> 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)
@@ -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())