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 }
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 ;-)
Klaus