diff options
author | horchi <vdr@jwendel.de> | 2017-03-19 12:53:24 +0100 |
---|---|---|
committer | horchi <vdr@jwendel.de> | 2017-03-19 12:53:24 +0100 |
commit | f1f589bad4249680a8ea5d0008f31e4fb8caa849 (patch) | |
tree | abb479749da8c1d0a8231ef9950cb3262c9ebb1c /epg2vdr.c | |
parent | 7b6f2a4d5dd2fc60b6f50d6f3c8b36ce732f6365 (diff) | |
download | vdr-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.c | 75 |
1 files changed, 36 insertions, 39 deletions
@@ -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; } |