diff options
Diffstat (limited to 'extensions/timers.c')
-rw-r--r-- | extensions/timers.c | 134 |
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 - } - } -} |