[Commits] : Tuxbox-GIT: apps branch master updated. CVS-Final-500-g877c152
Tuxbox Sources
Brought to you by:
dbt1
|
From: GetAway <tux...@ne...> - 2015-03-15 18:49:07
|
Project "Tuxbox-GIT: apps":
The branch, master has been updated
via 877c1529f160f5ff5b166ee0b2309ef328c2a01f (commit)
from 2385089284b6762acf16fc1de3478cbc3ef51ad0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 877c1529f160f5ff5b166ee0b2309ef328c2a01f
Author: Christian Schuett <Gau...@ho...>
Date: Sun Mar 15 16:46:11 2015 +0100
Neutrino: use existing code in timerd to skip repeat timer in timerlist
Signed-off-by: Christian Schuett <Gau...@ho...>
Signed-off-by: GetAway <get...@t-...>
diff --git a/tuxbox/neutrino/daemons/timerd/timerd.cpp b/tuxbox/neutrino/daemons/timerd/timerd.cpp
index d51a694..592ae7d 100644
--- a/tuxbox/neutrino/daemons/timerd/timerd.cpp
+++ b/tuxbox/neutrino/daemons/timerd/timerd.cpp
@@ -207,10 +207,11 @@ bool parse_command(CBasicMessage::Header &rmsg, int connfd)
CTimerManager::getInstance()->unlockEvents();
break;
- case CTimerdMsg::CMD_RESCHEDULETIMER: // event nach vorne oder hinten schieben
+ case CTimerdMsg::CMD_RESCHEDULETIMER: // event verschieben
{
- CBasicServer::receive_data(connfd,&msgModifyTimer, sizeof(msgModifyTimer));
- int ret=CTimerManager::getInstance()->rescheduleEvent(msgModifyTimer.eventID,msgModifyTimer.announceTime,msgModifyTimer.alarmTime, msgModifyTimer.stopTime);
+ CTimerdMsg::commandRescheduleTimer msgRescheduleTimer;
+ CBasicServer::receive_data(connfd, &msgRescheduleTimer, sizeof(msgRescheduleTimer));
+ int ret = CTimerManager::getInstance()->rescheduleEvent(msgRescheduleTimer.eventID);
CTimerdMsg::responseStatus rspStatus;
rspStatus.status = (ret!=0);
CBasicServer::send_data(connfd, &rspStatus, sizeof(rspStatus));
diff --git a/tuxbox/neutrino/daemons/timerd/timermanager.cpp b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
index 2d07185..5efb20d 100644
--- a/tuxbox/neutrino/daemons/timerd/timermanager.cpp
+++ b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
@@ -274,8 +274,6 @@ bool CTimerManager::removeEvent(int ev_ID)
events[ev_ID]->eventState = CTimerd::TIMERSTATE_TERMINATED; // set the state to terminated
res = true; // so timerthread will do the rest for us
}
- else
- res = false;
pthread_mutex_unlock(&tm_eventsMutex);
return res;
}
@@ -291,8 +289,6 @@ bool CTimerManager::stopEvent(int ev_ID)
events[ev_ID]->eventState = CTimerd::TIMERSTATE_HASFINISHED; // set the state to finished
res = true; // so timerthread will do the rest for us
}
- else
- res = false;
pthread_mutex_unlock(&tm_eventsMutex);
return res;
}
@@ -333,8 +329,6 @@ CTimerd::CTimerEventTypes* CTimerManager::getEventType(int ev_ID)
{
res = &(events[ev_ID]->eventType);
}
- else
- res = NULL;
pthread_mutex_unlock(&tm_eventsMutex);
return res;
}
@@ -391,8 +385,6 @@ int CTimerManager::modifyEvent(int ev_ID, time_t announceTime, time_t alarmTime,
m_saveEvents=true;
res = ev_ID;
}
- else
- res = 0;
pthread_mutex_unlock(&tm_eventsMutex);
return res;
}
@@ -422,26 +414,20 @@ int CTimerManager::modifyEvent(int ev_ID, unsigned char apids)
return res;
}
-int CTimerManager::rescheduleEvent(int ev_ID, time_t announceTime, time_t alarmTime, time_t stopTime)
+int CTimerManager::rescheduleEvent(int ev_ID)
{
int res = 0;
pthread_mutex_lock(&tm_eventsMutex);
-
if (events.find(ev_ID) != events.end())
{
CTimerEvent *event = events[ev_ID];
- if(event->announceTime > 0)
- event->announceTime += announceTime;
- if(event->alarmTime > 0)
- event->alarmTime += alarmTime;
- if(event->stopTime > 0)
- event->stopTime += stopTime;
- event->eventState = CTimerd::TIMERSTATE_SCHEDULED;
- m_saveEvents=true;
- res = ev_ID;
+ if (event->eventRepeat != CTimerd::TIMERREPEAT_ONCE && event->repeatCount != 1)
+ {
+ event->Reschedule(true);
+ m_saveEvents=true;
+ res = ev_ID;
+ }
}
- else
- res = 0;
pthread_mutex_unlock(&tm_eventsMutex);
return res;
}
@@ -886,7 +872,7 @@ CTimerEvent::CTimerEvent(CTimerd::CTimerEventTypes evtype,CConfigFile *config, i
dprintf("read PREVIOUS_STATE_%s %d\n",id.c_str(),previousState);
}
//------------------------------------------------------------
-void CTimerEvent::Reschedule()
+void CTimerEvent::Reschedule(bool force)
{
if(eventRepeat == CTimerd::TIMERREPEAT_ONCE)
{
@@ -896,7 +882,7 @@ void CTimerEvent::Reschedule()
else
{
time_t now = time(NULL);
- while(alarmTime <= now)
+ while(alarmTime <= now || force)
{
time_t diff = 0;
struct tm *t= localtime(&alarmTime);
@@ -964,10 +950,12 @@ void CTimerEvent::Reschedule()
announceTime += diff;
if(stopTime > 0)
stopTime += diff;
+ if(force)
+ break;
}
eventState = CTimerd::TIMERSTATE_SCHEDULED;
if (repeatCount > 0)
- repeatCount -= 1;
+ repeatCount--;
dprintf("event %d rescheduled\n",eventID);
}
}
@@ -1240,12 +1228,12 @@ void CTimerEvent_Record::saveToConfig(CConfigFile *config)
dprintf("set EPG_TITLE_%s to %s (%p)\n",id.c_str(),epgTitle.c_str(), &epgTitle);
}
//------------------------------------------------------------
-void CTimerEvent_Record::Reschedule()
+void CTimerEvent_Record::Reschedule(bool force)
{
// clear epgId on reschedule
eventInfo.epgID = 0;
eventInfo.epg_starttime = 0;
- CTimerEvent::Reschedule();
+ CTimerEvent::Reschedule(force);
getEpgId();
}
//------------------------------------------------------------
@@ -1407,12 +1395,12 @@ void CTimerEvent_NextProgram::saveToConfig(CConfigFile *config)
dprintf("set EVENT_INFO_APIDS_%s to 0x%X (%p)\n",id.c_str(),eventInfo.apids,&eventInfo.apids);
}
//------------------------------------------------------------
-void CTimerEvent_NextProgram::Reschedule()
+void CTimerEvent_NextProgram::Reschedule(bool force)
{
// clear eogId on reschedule
eventInfo.epgID = 0;
eventInfo.epg_starttime = 0;
- CTimerEvent::Reschedule();
+ CTimerEvent::Reschedule(force);
}
//=============================================================
// Remind Event
diff --git a/tuxbox/neutrino/daemons/timerd/timermanager.h b/tuxbox/neutrino/daemons/timerd/timermanager.h
index 632a850..25cf8fb 100644
--- a/tuxbox/neutrino/daemons/timerd/timermanager.h
+++ b/tuxbox/neutrino/daemons/timerd/timermanager.h
@@ -63,7 +63,7 @@ class CTimerEvent
static int remain_min(const time_t t) {return (t - time(NULL)) / 60;};
void printEvent(void);
- virtual void Reschedule();
+ virtual void Reschedule(bool force = false);
virtual void fireEvent(){};
virtual void stopEvent(){};
@@ -133,7 +133,7 @@ class CTimerEvent_Record : public CTimerEvent
virtual void announceEvent();
virtual void stopEvent();
virtual void saveToConfig(CConfigFile *config);
- virtual void Reschedule();
+ virtual void Reschedule(bool force = false);
virtual void getEpgId();
virtual void Refresh();
};
@@ -175,7 +175,7 @@ class CTimerEvent_NextProgram : public CTimerEvent
virtual void fireEvent();
virtual void announceEvent();
virtual void saveToConfig(CConfigFile *config);
- virtual void Reschedule();
+ virtual void Reschedule(bool force = false);
};
class CTimerEvent_Remind : public CTimerEvent
@@ -243,7 +243,7 @@ public:
// int modifyEvent(int eventID, time_t announceTime, time_t alarmTime, time_t stopTime, uint repeatcount, CTimerd::CTimerEventRepeat evrepeat = CTimerd::TIMERREPEAT_ONCE);
int modifyEvent(int eventID, time_t announceTime, time_t alarmTime, time_t stopTime, uint repeatcount, CTimerd::CTimerEventRepeat evrepeat, CTimerd::responseGetTimer& data);
int modifyEvent(int eventID, unsigned char apids);
- int rescheduleEvent(int eventID, time_t announceTime, time_t alarmTime, time_t stopTime);
+ int rescheduleEvent(int eventID);
void saveEventsToConfig();
void loadEventsFromConfig();
bool shutdown();
diff --git a/tuxbox/neutrino/lib/timerdclient/timerdclient.cpp b/tuxbox/neutrino/lib/timerdclient/timerdclient.cpp
index b085f7e..eeee6b4 100644
--- a/tuxbox/neutrino/lib/timerdclient/timerdclient.cpp
+++ b/tuxbox/neutrino/lib/timerdclient/timerdclient.cpp
@@ -194,22 +194,12 @@ bool CTimerdClient::modifyRecordTimerEvent(int eventid, time_t announcetime, tim
}
//-------------------------------------------------------------------------
-bool CTimerdClient::rescheduleTimerEvent(int eventid, time_t diff)
+bool CTimerdClient::rescheduleTimerEvent(int eventid)
{
- rescheduleTimerEvent(eventid,diff,diff,diff);
- return true;
-}
-//-------------------------------------------------------------------------
-
-bool CTimerdClient::rescheduleTimerEvent(int eventid, time_t announcediff, time_t alarmdiff, time_t stopdiff)
-{
- CTimerdMsg::commandModifyTimer msgModifyTimer;
- msgModifyTimer.eventID = eventid;
- msgModifyTimer.announceTime = announcediff;
- msgModifyTimer.alarmTime = alarmdiff;
- msgModifyTimer.stopTime = stopdiff;
+ CTimerdMsg::commandRescheduleTimer msgRescheduleTimer;
+ msgRescheduleTimer.eventID = eventid;
- send(CTimerdMsg::CMD_RESCHEDULETIMER, (char*) &msgModifyTimer, sizeof(msgModifyTimer));
+ send(CTimerdMsg::CMD_RESCHEDULETIMER, (char*) &msgRescheduleTimer, sizeof(msgRescheduleTimer));
CTimerdMsg::responseStatus response;
receive_data((char*)&response, sizeof(response));
diff --git a/tuxbox/neutrino/lib/timerdclient/timerdclient.h b/tuxbox/neutrino/lib/timerdclient/timerdclient.h
index 038c1da..f35449e 100644
--- a/tuxbox/neutrino/lib/timerdclient/timerdclient.h
+++ b/tuxbox/neutrino/lib/timerdclient/timerdclient.h
@@ -93,12 +93,8 @@ class CTimerdClient:private CBasicClient
// returns remaining mins, -1 if no sleeptimer exists
int getSleepTimerRemaining();
-
- // add diff to existing timer event
- bool rescheduleTimerEvent(int eventid, time_t diff);
-
- // add diff to existing timer event
- bool rescheduleTimerEvent(int eventid, time_t announcediff, time_t alarmdiff, time_t stoptime);
+ // reschedule existing timer event
+ bool rescheduleTimerEvent(int eventid);
// adds new sleeptimer event
int addSleepTimerEvent(time_t announcetime,time_t alarmtime) // sleeptimer setzen
diff --git a/tuxbox/neutrino/lib/timerdclient/timerdmsg.h b/tuxbox/neutrino/lib/timerdclient/timerdmsg.h
index 82c0637..20e335b 100644
--- a/tuxbox/neutrino/lib/timerdclient/timerdmsg.h
+++ b/tuxbox/neutrino/lib/timerdclient/timerdmsg.h
@@ -88,6 +88,10 @@ class CTimerdMsg : public CBasicMessage
uint repeatCount;
};
+ struct commandRescheduleTimer
+ {
+ int eventID;
+ };
struct commandRemind
{
diff --git a/tuxbox/neutrino/src/gui/timerlist.cpp b/tuxbox/neutrino/src/gui/timerlist.cpp
index f663d66..2a88102 100644
--- a/tuxbox/neutrino/src/gui/timerlist.cpp
+++ b/tuxbox/neutrino/src/gui/timerlist.cpp
@@ -504,7 +504,8 @@ int CTimerList::show()
}
else if (msg == CRCInput::RC_blue && !timerlist.empty())
{
- update = skipTimer();
+ // skip timer
+ update = Timer->rescheduleTimerEvent(timerlist[selected].eventID);
}
else if (CRCInput::isNumeric(msg))
{
@@ -1149,89 +1150,6 @@ int CTimerList::newTimer()
return ret;
}
-bool CTimerList::skipTimer()
-{
- CTimerd::responseGetTimer* timer = &timerlist[selected];
- if (timer->eventRepeat != CTimerd::TIMERREPEAT_ONCE && timer->repeatCount != 1)
- {
- struct tm *t = localtime(&timer->alarmTime);
- int isdst1 = t->tm_isdst;
- switch (timer->eventRepeat)
- {
- case CTimerd::TIMERREPEAT_DAILY:
- t->tm_mday++;
- break;
- case CTimerd::TIMERREPEAT_WEEKLY:
- t->tm_mday += 7;
- break;
- case CTimerd::TIMERREPEAT_BIWEEKLY:
- t->tm_mday += 14;
- break;
- case CTimerd::TIMERREPEAT_FOURWEEKLY:
- t->tm_mday += 28;
- break;
- case CTimerd::TIMERREPEAT_MONTHLY:
- t->tm_mon++;
- break;
- default:
- if (timer->eventRepeat >= CTimerd::TIMERREPEAT_WEEKDAYS)
- {
- int weekdays = ((int)timer->eventRepeat) >> 9;
- if (weekdays > 0)
- {
- bool weekday_arr[7];
- weekday_arr[0] = ((weekdays & 0x40) > 0); //So
- weekday_arr[1] = ((weekdays & 0x1) > 0); //Mo
- weekday_arr[2] = ((weekdays & 0x2) > 0); //Di
- weekday_arr[3] = ((weekdays & 0x4) > 0); //Mi
- weekday_arr[4] = ((weekdays & 0x8) > 0); //Do
- weekday_arr[5] = ((weekdays & 0x10) > 0); //Fr
- weekday_arr[6] = ((weekdays & 0x20) > 0); //Sa
- struct tm *t2 = localtime(&timer->alarmTime);
- int day = 1;
- for (; !weekday_arr[(t2->tm_wday + day) % 7]; day++);
- t2->tm_mday += day;
- }
- }
- }
- time_t diff = mktime(t) - timer->alarmTime;
- timer->alarmTime += diff;
- t = localtime(&timer->alarmTime);
- int isdst2 = t->tm_isdst;
- if (isdst2 > isdst1) //change from winter to summer
- {
- diff -= 3600;
- timer->alarmTime -= 3600;
- }
- else if (isdst1 > isdst2) //change from summer to winter
- {
- diff += 3600;
- timer->alarmTime += 3600;
- }
- if (timer->announceTime > 0)
- timer->announceTime += diff;
- if (timer->stopTime > 0)
- timer->stopTime += diff;
- if (timer->repeatCount > 0)
- timer->repeatCount--;
-
- if (timer->eventType == CTimerd::TIMER_RECORD)
- {
- Timer->modifyRecordTimerEvent(timer->eventID, timer->announceTime, timer->alarmTime,
- timer->stopTime, timer->eventRepeat, timer->repeatCount, timer->recordingDir);
- }
- else
- {
- Timer->modifyTimerEvent(timer->eventID, timer->announceTime, timer->alarmTime,
- timer->stopTime, timer->eventRepeat, timer->repeatCount);
- }
-
- return true;
- }
-
- return false;
-}
-
bool askUserOnTimerConflict(time_t announceTime, time_t stopTime)
{
CTimerdClient Timer;
diff --git a/tuxbox/neutrino/src/gui/timerlist.h b/tuxbox/neutrino/src/gui/timerlist.h
index a0ddf6b..5cd0f49 100644
--- a/tuxbox/neutrino/src/gui/timerlist.h
+++ b/tuxbox/neutrino/src/gui/timerlist.h
@@ -82,7 +82,6 @@ class CTimerList : public CMenuTarget
void updateSelection(unsigned int newpos);
int modifyTimer();
int newTimer();
- bool skipTimer();
public:
CTimerList();
-----------------------------------------------------------------------
Summary of changes:
tuxbox/neutrino/daemons/timerd/timerd.cpp | 7 +-
tuxbox/neutrino/daemons/timerd/timermanager.cpp | 44 ++++-------
tuxbox/neutrino/daemons/timerd/timermanager.h | 8 +-
tuxbox/neutrino/lib/timerdclient/timerdclient.cpp | 18 +----
tuxbox/neutrino/lib/timerdclient/timerdclient.h | 8 +--
tuxbox/neutrino/lib/timerdclient/timerdmsg.h | 4 +
tuxbox/neutrino/src/gui/timerlist.cpp | 86 +--------------------
tuxbox/neutrino/src/gui/timerlist.h | 1 -
8 files changed, 36 insertions(+), 140 deletions(-)
--
Tuxbox-GIT: apps
|