mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 15:32:59 +02:00
try to fix shutdown after wakeup, if several recordings was done,
cancel shutdown after wakeup, if remote used, based on code (c) martii <m4rtii@gmx.de>
This commit is contained in:
@@ -52,6 +52,7 @@
|
||||
#include <global.h>
|
||||
#include <driver/shutdown_count.h>
|
||||
#include <neutrino.h>
|
||||
#include <timerd/timermanager.h>
|
||||
#include <cs_api.h>
|
||||
|
||||
//#define RCDEBUG
|
||||
@@ -136,6 +137,7 @@ CRCInput::CRCInput()
|
||||
repeat_block = repeat_block_generic = 0;
|
||||
open();
|
||||
rc_last_key = KEY_MAX;
|
||||
firstKey = true;
|
||||
|
||||
//select and setup remote control hardware
|
||||
set_rc_hw();
|
||||
@@ -1194,6 +1196,10 @@ void CRCInput::getMsg_us(neutrino_msg_t * msg, neutrino_msg_data_t * data, uint6
|
||||
if(ret != sizeof(t_input_event))
|
||||
continue;
|
||||
SHTDCNT::getInstance()->resetSleepTimer();
|
||||
if (firstKey) {
|
||||
firstKey = false;
|
||||
CTimerManager::getInstance()->cancelShutdownOnWakeup();
|
||||
}
|
||||
uint32_t trkey = translate(ev.code, i);
|
||||
#ifdef DEBUG
|
||||
printf("key: %04x value %d, translate: %04x -%s-\n", ev.code, ev.value, trkey, getKeyName(trkey).c_str());
|
||||
|
@@ -151,6 +151,7 @@ class CRCInput
|
||||
|
||||
int fd_max;
|
||||
int clickfd;
|
||||
bool firstKey;
|
||||
__u16 rc_last_key;
|
||||
void set_dsp();
|
||||
|
||||
|
@@ -727,11 +727,12 @@ bool CTimerManager::shutdown()
|
||||
void CTimerManager::shutdownOnWakeup(int currEventID)
|
||||
{
|
||||
time_t nextAnnounceTime=0;
|
||||
if(wakeup == 0)
|
||||
return;
|
||||
|
||||
wakeup = 0;
|
||||
pthread_mutex_lock(&tm_eventsMutex);
|
||||
if(wakeup == 0) {
|
||||
pthread_mutex_unlock(&tm_eventsMutex);
|
||||
return;
|
||||
}
|
||||
|
||||
CTimerEventMap::iterator pos = events.begin();
|
||||
for(;pos != events.end();++pos)
|
||||
@@ -756,10 +757,23 @@ void CTimerManager::shutdownOnWakeup(int currEventID)
|
||||
{ // in den naechsten 10 min steht nix an
|
||||
dprintf("Programming shutdown event\n");
|
||||
CTimerEvent_Shutdown* event = new CTimerEvent_Shutdown(now+120, now+180);
|
||||
addEvent(event);
|
||||
shutdown_eventID = addEvent(event);
|
||||
wakeup = 0;
|
||||
}
|
||||
pthread_mutex_unlock(&tm_eventsMutex);
|
||||
}
|
||||
|
||||
void CTimerManager::cancelShutdownOnWakeup()
|
||||
{
|
||||
pthread_mutex_lock(&tm_eventsMutex);
|
||||
if (shutdown_eventID > -1) {
|
||||
removeEvent(shutdown_eventID);
|
||||
shutdown_eventID = -1;
|
||||
}
|
||||
wakeup = 0;
|
||||
pthread_mutex_unlock(&tm_eventsMutex);
|
||||
}
|
||||
|
||||
void CTimerManager::setRecordingSafety(int pre, int post)
|
||||
{
|
||||
m_extraTimeStart=pre;
|
||||
|
@@ -212,6 +212,7 @@ class CTimerManager
|
||||
private:
|
||||
void Init(void);
|
||||
int eventID;
|
||||
int shutdown_eventID;
|
||||
CEventServer *eventServer;
|
||||
CTimerEventMap events;
|
||||
pthread_t thrTimer;
|
||||
@@ -247,6 +248,7 @@ public:
|
||||
void getRecordingSafety(int &pre, int &post){pre=m_extraTimeStart;post=m_extraTimeEnd;}
|
||||
void setRecordingSafety(int pre, int post);
|
||||
void loadRecordingSafety();
|
||||
void cancelShutdownOnWakeup();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user