diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2005-09-03 11:51:54 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2005-09-03 11:51:54 +0200 |
commit | 7148cf452c440d6f7ee753866275968188094fbc (patch) | |
tree | 6f0b19ccac857ab2bb3fb33d687abd71d066c724 | |
parent | 45a29e5b1614359d09aa3e69b8928fcfeebc84a2 (diff) | |
download | vdr-7148cf452c440d6f7ee753866275968188094fbc.tar.gz vdr-7148cf452c440d6f7ee753866275968188094fbc.tar.bz2 |
The menu timeout handling is now done centrally in the main program loop
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | menu.c | 17 | ||||
-rw-r--r-- | menu.h | 5 | ||||
-rw-r--r-- | vdr.c | 11 |
4 files changed, 11 insertions, 23 deletions
@@ -3777,3 +3777,4 @@ Video Disk Recorder Revision History the form "@plugin" even if that plugin doesn't have a main menu entry (using part of a patch by Hardy Flor, which originally implemented calling plugins from SVDRP). +- The menu timeout handling is now done centrally in the main program loop. @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.358 2005/09/03 10:34:46 kls Exp $ + * $Id: menu.c 1.359 2005/09/03 11:42:27 kls Exp $ */ #include "menu.h" @@ -29,7 +29,6 @@ #include "transfer.h" #include "videodir.h" -#define MENUTIMEOUT 120 // seconds #define MAXWAIT4EPGINFO 3 // seconds #define MODETIMEOUT 3 // seconds @@ -1300,7 +1299,6 @@ cMenuCam::cMenuCam(cCiMenu *CiMenu) Add(new cOsdItem(ciMenu->BottomText())); Display(); dsyslog("CAM: Menu - %s", ciMenu->TitleText()); - lastActivity = time(NULL); } cMenuCam::~cMenuCam() @@ -1329,10 +1327,6 @@ eOSState cMenuCam::ProcessKey(eKeys Key) default: break; } } - if (Key != kNone) - lastActivity = time(NULL); - else if (time(NULL) - lastActivity > MENUTIMEOUT) - state = osEnd; return state; } @@ -1350,7 +1344,6 @@ cMenuCamEnquiry::cMenuCamEnquiry(cCiEnquiry *CiEnquiry) SetTitle(ciEnquiry->Text() ? ciEnquiry->Text() : "CAM"); Add(new cMenuEditNumItem("Input", input, Length, ciEnquiry->Blind())); Display(); - lastActivity = time(NULL); } cMenuCamEnquiry::~cMenuCamEnquiry() @@ -1379,10 +1372,6 @@ eOSState cMenuCamEnquiry::ProcessKey(eKeys Key) default: break; } } - if (Key != kNone) - lastActivity = time(NULL); - else if (time(NULL) - lastActivity > MENUTIMEOUT) - state = osEnd; return state; } @@ -2505,7 +2494,6 @@ void cMenuMain::Set(void) SetHelp(!replaying ? tr("Record") : NULL, tr("Audio"), replaying ? NULL : tr("Pause"), replaying ? tr("Button$Stop") : cReplayControl::LastReplayed() ? tr("Resume") : NULL); Display(); - lastActivity = time(NULL); } eOSState cMenuMain::ProcessKey(eKeys Key) @@ -2578,15 +2566,12 @@ eOSState cMenuMain::ProcessKey(eKeys Key) } } if (Key != kNone) { - lastActivity = time(NULL); if (Setup.OSDLanguage != osdLanguage) { Set(); if (!HasSubMenu()) Display(); } } - else if (time(NULL) - lastActivity > MENUTIMEOUT) - state = osEnd; return state; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 1.72 2005/09/03 10:33:17 kls Exp $ + * $Id: menu.h 1.73 2005/09/03 11:41:41 kls Exp $ */ #ifndef __MENU_H @@ -55,7 +55,6 @@ public: class cMenuMain : public cOsdMenu { private: - time_t lastActivity; bool replaying; static cOsdObject *pluginOsdObject; void Set(void); @@ -120,7 +119,6 @@ public: class cMenuCam : public cOsdMenu { private: cCiMenu *ciMenu; - time_t lastActivity; bool selected; eOSState Select(void); public: @@ -132,7 +130,6 @@ public: class cMenuCamEnquiry : public cOsdMenu { private: cCiEnquiry *ciEnquiry; - time_t lastActivity; char *input; bool replied; eOSState Reply(void); @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.212 2005/09/03 11:26:27 kls Exp $ + * $Id: vdr.c 1.213 2005/09/03 11:50:28 kls Exp $ */ #include <getopt.h> @@ -66,6 +66,7 @@ #define LASTCAMMENUTIMEOUT 3 // seconds to run the main loop 'fast' after a CAM menu has been closed // in order to react on a possible new CAM menu as soon as possible #define DEVICEREADYTIMEOUT 30 // seconds to wait until all devices are ready +#define MENUTIMEOUT 120 // seconds of user inactivity after which an OSD display is closed #define EXIT(v) { ExitCode = (v); goto Exit; } @@ -806,8 +807,12 @@ int main(int argc, char *argv[]) Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time if (Interact) { eOSState state = Interact->ProcessKey(key); - if (state == osUnknown && ISMODELESSKEY(key) && cControl::Control() && Interact != cControl::Control()) - state = cControl::Control()->ProcessKey(key); + if (state == osUnknown) { + if (ISMODELESSKEY(key) && cControl::Control() && Interact != cControl::Control()) + state = cControl::Control()->ProcessKey(key); + else if (time(NULL) - LastActivity > MENUTIMEOUT) + state = osEnd; + } switch (state) { case osPause: DELETENULL(Menu); cControl::Shutdown(); // just in case |