[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