summaryrefslogtreecommitdiff
path: root/recmanager.c
diff options
context:
space:
mode:
Diffstat (limited to 'recmanager.c')
-rw-r--r--recmanager.c49
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);