[vdr] how to stop timer?
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Fri Jan 20 17:32:04 CET 2006
Klaus Schmidinger wrote:
> Markus Hahn wrote:
>
>> Hi there
>> A full or not available disk causes a endless lopp of TimerStart and
>> EmergencyExit if a timer is active.
>>
>> To avoid this, I added this code to cRecordControls::Start() :
>> menu.c:3518
>> bool cRecordControls::Start(cTimer *Timer, bool Pause)
>> {
>> ChangeState();
>> if (!VideoFileSpaceAvailable(300))
>> {
>> Skins.Message(mtInfo, tr("No disk space!"));
>> if (Timer)
>> Timer->Delete();
>>
>> return false;
>> }
>>
>> Now the message pops up endlessly, because the timer is still
>> aktive??? Any suggestions?
>
>
> Maybe a better place for this would be in the main VDR loop:
>
> // Start new recordings:
> if (VideoFileSpaceAvailable(300)) {
> cTimer *Timer = Timers.GetMatch(Now);
> if (Timer) {
> if (!cRecordControls::Start(Timer))
> Timer->SetPending(true);
> else
> LastTimerChannel = Timer->Channel()->Number();
> }
> }
> else if (/*TimeSinceLastNoDiskSpaceMessageGreaterLimit*/) {
> Skins.Message(mtWarning, tr("No disk space!"));
> // reset timeout limit
> }
After some more thinking I believe cRecordControls::Start() actually
is the better place for this check, since it is called several times.
Please try the attached patch.
Klaus
More information about the vdr
mailing list