summaryrefslogtreecommitdiff
path: root/vdr.c
diff options
context:
space:
mode:
Diffstat (limited to 'vdr.c')
-rw-r--r--vdr.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/vdr.c b/vdr.c
index f58d02b..c98ee0d 100644
--- a/vdr.c
+++ b/vdr.c
@@ -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);