summaryrefslogtreecommitdiff
path: root/recmanager.c
diff options
context:
space:
mode:
Diffstat (limited to 'recmanager.c')
-rw-r--r--recmanager.c67
1 files changed, 46 insertions, 21 deletions
diff --git a/recmanager.c b/recmanager.c
index 4ecdb66..18e38e9 100644
--- a/recmanager.c
+++ b/recmanager.c
@@ -96,10 +96,11 @@ cTimer *cRecManager::createTimer(const cEvent *event, std::string path) {
cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
cTimer *timer = new cTimer(event);
#if VDRVERSNUM >= 20301
- if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost)
- ((cTimer*)timer)->SetRemote(Setup.SVDRPDefaultHost);
LOCK_TIMERS_WRITE;
cTimers* timers = Timers;
+ timers->SetExplicitModify();
+ if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost)
+ timer->SetRemote(Setup.SVDRPDefaultHost);
#else
cTimers* timers = &Timers;
#endif
@@ -115,11 +116,20 @@ cTimer *cRecManager::createLocalTimer(const cEvent *event, std::string path) {
timer = t;
isyslog("timer %s reactivated", *t->ToDescr());
} else {
+ SetTimerPath(timer, event, path);
timers->Add(timer);
+ timers->SetModified();
+#if VDRVERSNUM >= 20301
+ if (!HandleRemoteTimerModifications(timer)) {
+ timers->Del(timer);
+ esyslog(tr("tvguide: RemoteTimerModifications failed"));
+ } else {
+ isyslog("timer %s added (active)", *timer->ToDescr());
+ }
+#else
isyslog("timer %s added (active)", *timer->ToDescr());
+#endif
}
- SetTimerPath(timer, event, path);
- timers->SetModified();
return timer;
}
@@ -204,6 +214,12 @@ void cRecManager::DeleteTimer(const cTimer *timer) {
#if VDRVERSNUM >= 20301
LOCK_TIMERS_WRITE;
cTimers* timers = Timers;
+ if (timer && timer->Remote() && !timer->Recording()) {
+ if (HandleRemoteTimerModifications(NULL, (cTimer*)timer)) {
+ timers->Del((cTimer*)timer);
+ }
+ timers->SetModified();
+ }
cTimer* t = timers->GetTimer(timer);
#else
cTimers* timers = &Timers;
@@ -238,24 +254,33 @@ void cRecManager::DeleteRemoteTimer(const cEvent *event) {
}
}
-void cRecManager::SaveTimer(const cTimer *t, cTimer newTimerSettings) {
+void cRecManager::SaveTimer(const cTimer *t, cTimer *newTimerSettings) {
if (!t)
return;
#if VDRVERSNUM >= 20301
LOCK_TIMERS_WRITE;
- cTimer *timer = Timers->GetTimer(t);
+ cTimers* timers = Timers;
+ timers->SetExplicitModify();
+ if (t && t->Remote()) {
+ if (!HandleRemoteTimerModifications(newTimerSettings, (cTimer *)t)) {
+ esyslog(tr("tvguide: RemoteTimerModifications failed"));
+ }
+ }
#else
- cTimer *timer = Timers.GetTimer((cTimer*)t);
+ cTimers* timers = &Timers;
#endif
-
- 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();
+ cTimer *timer = timers->GetTimer(t);
+ 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);
@@ -264,10 +289,10 @@ void cRecManager::SaveTimer(const cTimer *t, cTimer newTimerSettings) {
timer->SetLifetime(lifetime);
timer->SetFile(fileName.c_str());
- if (timer->HasFlags(tfActive) && !active)
- timer->ClrFlags(tfActive);
- else if (!timer->HasFlags(tfActive) && active)
- timer->SetFlags(tfActive);
+ if (active)
+ timer->SetFlags(tfActive);
+ else
+ timer->ClrFlags(tfActive);
#if VDRVERSNUM < 20300
timer->SetEventFromSchedule();
@@ -280,9 +305,9 @@ void cRecManager::SaveTimer(const cTimer *t, cTimer newTimerSettings) {
RefreshRemoteTimers();
} else {
#if VDRVERSNUM >= 20301
- Timers->SetModified();
+ timers->SetModified();
#else
- Timers.SetModified();
+ timers.SetModified();
#endif
}
}