diff options
-rw-r--r-- | status.cpp | 9 | ||||
-rw-r--r-- | status.h | 3 | ||||
-rw-r--r-- | timers.cpp | 2 | ||||
-rw-r--r-- | timers.h | 4 |
4 files changed, 14 insertions, 4 deletions
@@ -8,9 +8,16 @@ namespace vdrlive { StatusMonitor::StatusMonitor() { } - + +void StatusMonitor::TimerChange(const cTimer *Timer, eTimerChange Change) +{ + cMutexLock timersLock( &LiveTimerManager() ); + LiveTimerManager().SetReloadTimers(); +} + void StatusMonitor::Recording( cDevice const*, char const*, char const*, bool ) { + cMutexLock timersLock( &LiveTimerManager() ); LiveTimerManager().DoReloadTimers(); } @@ -12,7 +12,8 @@ class StatusMonitor: public cStatus private: StatusMonitor(); StatusMonitor( StatusMonitor const& ); - + + virtual void TimerChange(const cTimer *Timer, eTimerChange Change); virtual void Recording( cDevice const* Device, char const* Name, char const* FileName, bool On ); }; @@ -249,7 +249,7 @@ namespace vdrlive { void TimerManager::DoPendingWork() { - if ( m_updateTimers.size() == 0 && !m_timers.Modified() ) + if ( m_updateTimers.size() == 0 && !m_timers.Modified() && !m_reloadTimers ) return; cMutexLock lock( this ); @@ -53,8 +53,9 @@ namespace vdrlive { void ToggleTimerActive( cTimer* timer); // may only be called from Plugin::MainThreadHook void DoPendingWork(); - void DoReloadTimers() { m_timers.ReloadTimers(); } + void DoReloadTimers() { m_timers.ReloadTimers(); m_reloadTimers = false; } const cTimer* GetTimer(tEventID eventid, tChannelID channelid); + void SetReloadTimers() { m_reloadTimers = true; } private: typedef std::pair< cTimer*, std::string > TimerPair; @@ -69,6 +70,7 @@ namespace vdrlive { TimerList m_updateTimers; ErrorList m_failedUpdates; cCondVar m_updateWait; + bool m_reloadTimers; void DoUpdateTimers(); void DoInsertTimer( TimerPair& timerData ); |