summaryrefslogtreecommitdiff
path: root/extensions/timers.c
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/timers.c')
-rw-r--r--extensions/timers.c134
1 files changed, 0 insertions, 134 deletions
diff --git a/extensions/timers.c b/extensions/timers.c
deleted file mode 100644
index 4f81b2a..0000000
--- a/extensions/timers.c
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "timers.h"
-#include "../services/epgsearch.h"
-#include "../services/remotetimers.h"
-
-static int CompareTimers(const void *a, const void *b) {
- return (*(const cTimer **)a)->Compare(**(const cTimer **)b);
-}
-
-cGlobalSortedTimers::cGlobalSortedTimers(int timerCount, bool forceRefresh) : cVector<const cTimer*>(timerCount) {
- static bool initial = true;
- static cRemoteTimerRefresh *remoteTimerRefresh = NULL;
- localTimer = NULL;
-
- if (forceRefresh)
- initial = true;
- //check if remotetimers plugin is available
- static cPlugin* pRemoteTimers = cPluginManager::GetPlugin("remotetimers");
-
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
- LOCK_TIMERS_READ;
- LOCK_SCHEDULES_READ;
- const cTimers* timers = Timers;
- const cSchedules* schedules = Schedules;
-#else
- const cTimers* timers = &Timers;
- cSchedulesLock schedulesLock;
- const cSchedules* schedules = (cSchedules*)cSchedules::Schedules(schedulesLock);
-#endif
-
- if (pRemoteTimers && initial) {
- cString errorMsg;
- pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg);
- initial = false;
- }
-
- for (const cTimer *Timer = timers->First(); Timer; Timer = timers->Next(Timer)) {
- if (Timer->HasFlags(tfActive))
- Append(Timer);
- }
-
- //if remotetimers plugin is available, take timers also from him
- if (pRemoteTimers) {
- cTimer* remoteTimer = NULL;
- while (pRemoteTimers->Service("RemoteTimers::ForEach-v1.0", &remoteTimer) && remoteTimer != NULL) {
- remoteTimer->SetEventFromSchedule(schedules); // make sure the event is current
- if (remoteTimer->HasFlags(tfActive))
- Append(remoteTimer);
- }
- }
-
- Sort(CompareTimers);
-
- int numTimers = Size();
- if (numTimers > 0) {
- localTimer = new bool[numTimers];
- for (int i=0; i < numTimers; i++) {
- if (!pRemoteTimers) {
- localTimer[i] = true;
- } else {
- localTimer[i] = false;
- for (const cTimer *Timer = timers->First(); Timer; Timer = timers->Next(Timer)) {
- if (Timer == At(i)) {
- localTimer[i] = true;
- break;
- }
- }
- }
- }
- }
-
- if (pRemoteTimers && (remoteTimerRefresh == NULL))
- remoteTimerRefresh = new cRemoteTimerRefresh();
-}
-
-cGlobalSortedTimers::~cGlobalSortedTimers(void) {
- if (localTimer) {
- delete[] localTimer;
- }
-}
-
-bool cGlobalSortedTimers::IsRemoteTimer(int i) {
- if (!localTimer)
- return true;
- if (i >= Size())
- return true;
- return !(localTimer[i]);
-}
-
-
-int cGlobalSortedTimers::NumTimerConfilicts(void) {
- int numConflicts = 0;
- cPlugin *p = cPluginManager::GetPlugin("epgsearch");
- if (p) {
- Epgsearch_lastconflictinfo_v1_0 *serviceData = new Epgsearch_lastconflictinfo_v1_0;
- if (serviceData) {
- serviceData->nextConflict = 0;
- serviceData->relevantConflicts = 0;
- serviceData->totalConflicts = 0;
- p->Service("Epgsearch-lastconflictinfo-v1.0", serviceData);
- if (serviceData->relevantConflicts > 0) {
- numConflicts = serviceData->relevantConflicts;
- }
- delete serviceData;
- }
- }
- return numConflicts;
-}
-
-cRemoteTimerRefresh::cRemoteTimerRefresh(): cThread("skindesigner: RemoteTimers::RefreshTimers") {
- Start();
-}
-
-cRemoteTimerRefresh::~cRemoteTimerRefresh(void) {
- Cancel(-1);
- while (Active())
- cCondWait::SleepMs(10);
-}
-
-void cRemoteTimerRefresh::Action(void) {
-#define REFESH_INTERVALL_MS 30000
- while (Running()) {
- cCondWait::SleepMs(REFESH_INTERVALL_MS);
- // make sure that no timer is currently being edited
- if (!cOsd::IsOpen()) {
- cGlobalSortedTimers(true);
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
- LOCK_TIMERS_WRITE;
- Timers->SetModified();
-#else
- Timers.SetModified();
-#endif
- }
- }
-}