summaryrefslogtreecommitdiff
path: root/epg2vdr.c
diff options
context:
space:
mode:
authorhorchi <vdr@jwendel.de>2017-03-19 12:53:24 +0100
committerhorchi <vdr@jwendel.de>2017-03-19 12:53:24 +0100
commitf1f589bad4249680a8ea5d0008f31e4fb8caa849 (patch)
treeabb479749da8c1d0a8231ef9950cb3262c9ebb1c /epg2vdr.c
parent7b6f2a4d5dd2fc60b6f50d6f3c8b36ce732f6365 (diff)
downloadvdr-plugin-epg2vdr-f1f589bad4249680a8ea5d0008f31e4fb8caa849.tar.gz
vdr-plugin-epg2vdr-f1f589bad4249680a8ea5d0008f31e4fb8caa849.tar.bz2
2017-03-19: version 1.1.49 (horchi)\n - bugfix: Fixed possible crash in extended skins interface\n\n1.1.49
Diffstat (limited to 'epg2vdr.c')
-rw-r--r--epg2vdr.c75
1 files changed, 36 insertions, 39 deletions
diff --git a/epg2vdr.c b/epg2vdr.c
index 5ab3e84..1c2d7e9 100644
--- a/epg2vdr.c
+++ b/epg2vdr.c
@@ -858,22 +858,29 @@ bool cPluginEPG2VDR::Service(const char* id, void* data)
return true;
}
+ // Services with direct db access
+
cMutexLock lock(&mutexServiceWithDb);
- if (strcmp(id, EPG2VDR_TIMER_SERVICE) == 0)
+ if (initDb() == success)
{
- cEpgTimer_Service_V1* ts = (cEpgTimer_Service_V1*)data;
+ if (strcmp(id, EPG2VDR_TIMER_SERVICE) == 0)
+ {
+ cEpgTimer_Service_V1* ts = (cEpgTimer_Service_V1*)data;
- if (ts)
- return timerService(ts);
- }
+ if (ts)
+ return timerService(ts);
+ }
- else if (strcmp(id, EPG2VDR_EVENT_SERVICE) == 0)
- {
- cEpgEvent_Service_V1* es = (cEpgEvent_Service_V1*)data;
+ else if (strcmp(id, EPG2VDR_EVENT_SERVICE) == 0)
+ {
+ cEpgEvent_Service_V1* es = (cEpgEvent_Service_V1*)data;
+
+ if (es)
+ return eventService(es);
+ }
- if (es)
- return eventService(es);
+ exitDb();
}
return false;
@@ -888,30 +895,25 @@ int cPluginEPG2VDR::timerService(cEpgTimer_Service_V1* ts)
cMutexLock lock(&mutexTimerService);
uint64_t start = cTimeMs::Now();
- if (initDb() == success)
- {
- timerDb->clear();
- vdrDb->clear();
-
- ts->epgTimers.clear();
+ timerDb->clear();
+ vdrDb->clear();
- for (int f = selectTimers->find(); f && connection->check() == success; f = selectTimers->fetch())
- {
- cEpgTimer* epgTimer = newTimerObjectFromRow(timerDb->getRow(), vdrDb->getRow());
+ ts->epgTimers.clear();
- if (Epg2VdrConfig.shareInWeb || epgTimer->isLocal())
- ts->epgTimers.push_back(epgTimer);
- else
- delete epgTimer;
- }
+ for (int f = selectTimers->find(); f && connection->check() == success; f = selectTimers->fetch())
+ {
+ cEpgTimer* epgTimer = newTimerObjectFromRow(timerDb->getRow(), vdrDb->getRow());
- tell(1, "Answer '%s' call with %lu timers, duration was (%s)",
- EPG2VDR_TIMER_SERVICE,
- ts->epgTimers.size(),
- ms2Dur(cTimeMs::Now()-start).c_str());
+ if (Epg2VdrConfig.shareInWeb || epgTimer->isLocal())
+ ts->epgTimers.push_back(epgTimer);
+ else
+ delete epgTimer;
}
- exitDb();
+ tell(1, "Answer '%s' call with %lu timers, duration was (%s)",
+ EPG2VDR_TIMER_SERVICE,
+ ts->epgTimers.size(),
+ ms2Dur(cTimeMs::Now()-start).c_str());
return true;
}
@@ -929,18 +931,13 @@ int cPluginEPG2VDR::eventService(cEpgEvent_Service_V1* es)
if (!es->in)
return false;
- if ((status = initDb()) == success)
- {
- es->out = createEventCopy(es->in);
+ es->out = createEventCopy(es->in);
- useeventsDb->clear();
- useeventsDb->setValue("USEID", (int)es->in->EventID());
+ useeventsDb->clear();
+ useeventsDb->setValue("USEID", (int)es->in->EventID());
- enrichEvent((cEpgEvent*)es->out, useeventsDb, selectEventById);
- status = true;
- }
-
- exitDb();
+ enrichEvent((cEpgEvent*)es->out, useeventsDb, selectEventById);
+ status = true;
return status;
}