diff options
Diffstat (limited to 'vdr.c')
-rw-r--r-- | vdr.c | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.209 2005/07/31 11:25:16 kls Exp $ + * $Id: vdr.c 1.211 2005/08/21 08:47:06 kls Exp $ */ #include <getopt.h> @@ -63,6 +63,9 @@ #define SHUTDOWNWAIT 300 // seconds to wait in user prompt before automatic shutdown #define MANUALSTART 600 // seconds the next timer must be in the future to assume manual start #define CHANNELSAVEDELTA 600 // seconds before saving channels.conf after automatic modifications +#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 EXIT(v) { ExitCode = (v); goto Exit; } @@ -389,6 +392,7 @@ int main(int argc, char *argv[]) int PreviousChannelIndex = 0; time_t LastChannelChanged = time(NULL); time_t LastActivity = 0; + time_t LastCamMenu = 0; int MaxLatencyTime = 0; bool ForceShutdown = false; bool UserShutdown = false; @@ -517,6 +521,8 @@ int main(int argc, char *argv[]) // Channel: + if (!cDevice::WaitForAllDevicesReady(DEVICEREADYTIMEOUT)) + dsyslog("not all devices ready after %d seconds", DEVICEREADYTIMEOUT); Channels.SwitchTo(Setup.CurrentChannel); if (MuteAudio) cDevice::PrimaryDevice()->ToggleMute(); @@ -660,11 +666,16 @@ int main(int argc, char *argv[]) if (!Menu && Recordings.NeedsUpdate()) Recordings.Load(); // CAM control: - if (!Menu && !cOsd::IsOpen()) + if (!Menu && !cOsd::IsOpen()) { Menu = CamControl(); + if (Menu) + LastCamMenu = 0; + else if (!LastCamMenu) + LastCamMenu = time(NULL); + } // User Input: cOsdObject *Interact = Menu ? Menu : cControl::Control(); - eKeys key = Interface->GetKey(!Interact || !Interact->NeedsFastResponse()); + eKeys key = Interface->GetKey((!Interact || !Interact->NeedsFastResponse()) && time(NULL) - LastCamMenu > LASTCAMMENUTIMEOUT); if (NORMALKEY(key) != kNone) { EITScanner.Activity(); LastActivity = time(NULL); |