[vdr] how to stop timer?

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Thu Jan 19 18:19:00 CET 2006

Markus Hahn wrote:
> Am Donnerstag, 19. Januar 2006 18:04 schrieb Klaus Schmidinger:
>>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
>>               }
>>BTW: brutally deleting that timer is probably not a good idea.
>>This could be a repeating timer, or disk space could become
>>available later. Also, the cRecordControls::Start() function is called
>>from a loop through all timers, so if you delete it, strange things
>>might happen ;-)
> Yes, I agree but  looping through all timers objects, 
> and t->SetFlags(tfNone);  
> ( for prove of concept ;) 
> dosen`t have any effect at all!?

Well, that might work, since you disable the timer.
But that would disable them for good, and would lose
the VPS bit and everything else.

> But thanks for the code. I will try this right now. 

I guess I'll also implement this in the next version - if the disk
is full there is actually no point in starting a recording.
Thanks for the suggestion.


More information about the vdr mailing list