diff options
Diffstat (limited to 'recmanager.c')
-rw-r--r-- | recmanager.c | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/recmanager.c b/recmanager.c index ce95909..f55f6c9 100644 --- a/recmanager.c +++ b/recmanager.c @@ -267,6 +267,21 @@ void cRecManager::DeleteRemoteTimer(const cEvent *event) { } } +void cRecManager::OnOffTimer(const cEvent *event) { + const cTimer *t; +#if VDRVERSNUM >= 20301 + { + LOCK_TIMERS_READ; + t = Timers->GetMatch(event); + } +#else + t = Timers.GetMatch(event); +#endif + if (!t) + return; + SaveTimer(t); +} + void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) { if (!t) return; @@ -288,20 +303,26 @@ void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) { if (!timer) { return; } - bool active = newTimerSettings->HasFlags(tfActive); - int prio = newTimerSettings->Priority(); - int lifetime = newTimerSettings->Lifetime(); - time_t day = newTimerSettings->Day(); - int start = newTimerSettings->Start(); - int stop = newTimerSettings->Stop(); - std::string fileName = newTimerSettings->File(); - - timer->SetDay(day); - timer->SetStart(start); - timer->SetStop(stop); - timer->SetPriority(prio); - timer->SetLifetime(lifetime); - timer->SetFile(fileName.c_str()); + + bool active = true; + if (newTimerSettings) { + int prio = newTimerSettings->Priority(); + int lifetime = newTimerSettings->Lifetime(); + time_t day = newTimerSettings->Day(); + int start = newTimerSettings->Start(); + int stop = newTimerSettings->Stop(); + std::string fileName = newTimerSettings->File(); + + timer->SetDay(day); + timer->SetStart(start); + timer->SetStop(stop); + timer->SetPriority(prio); + timer->SetLifetime(lifetime); + timer->SetFile(fileName.c_str()); + + active = newTimerSettings->HasFlags(tfActive); + } else + active = !timer->HasFlags(tfActive); if (active) timer->SetFlags(tfActive); |