diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2013-02-18 10:41:43 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-02-18 10:41:43 +0100 |
commit | eda593934db9ccb1c67d566ecf13108672c08ab6 (patch) | |
tree | 30e5c952c0899853b78cea862cb0d73314337630 | |
parent | a88ca5d4e5e3f994b74411a6f8089730109f9bcf (diff) | |
download | vdr-eda593934db9ccb1c67d566ecf13108672c08ab6.tar.gz vdr-eda593934db9ccb1c67d566ecf13108672c08ab6.tar.bz2 |
Modified handling user inactivity in the shutdown handler to avoid a problem in case the system time is changed after VDR has been started
-rw-r--r-- | CONTRIBUTORS | 4 | ||||
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | config.h | 6 | ||||
-rw-r--r-- | shutdown.c | 15 | ||||
-rw-r--r-- | shutdown.h | 21 |
5 files changed, 32 insertions, 17 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2ede5a72..35d8c3d1 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1777,6 +1777,8 @@ Udo Richter <udo_richter@gmx.de> for suggesting to shift editing marks that don't point to an I-frame towards the next I-frame when a recording is played for requesting to keep using relative paths when building plugins locally + for fixing a problem with detecting user inactivity in case the system time is + changed after VDR has been started Sven Kreiensen <svenk@kammer.uni-hannover.de> for his help in keeping 'channels.conf.terr' up to date @@ -3039,6 +3041,8 @@ Sören Moch <smoch@web.de> handling of PCR values for improving cutting MPEG-2 video for pointing out that FindHeader() can also be used in cMpeg2Fixer::AdjTref() + for reporting a problem with detecting user inactivity in case the system time is + changed after VDR has been started Peter Münster <pmlists@free.fr> for fixing 'make install' to not overwrite existing configuration files @@ -7649,3 +7649,6 @@ Video Disk Recorder Revision History - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Updated the Polish OSD texts (thanks to Marek Nazarko). +- Modified handling user inactivity in the shutdown handler to avoid a problem in case + the system time is changed after VDR has been started (thanks to Udo Richter, reported + by Sören Moch). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 2.68 2013/02/17 15:12:21 kls Exp $ + * $Id: config.h 2.69 2013/02/18 10:41:43 kls Exp $ */ #ifndef __CONFIG_H @@ -27,8 +27,8 @@ // The plugin API's version number: -#define APIVERSION "1.7.38" -#define APIVERSNUM 10738 // Version * 10000 + Major * 100 + Minor +#define APIVERSION "1.7.39" +#define APIVERSNUM 10739 // Version * 10000 + Major * 100 + Minor // When loading plugins, VDR searches them by their APIVERSION, which // may be smaller than VDRVERSION in case there have been no changes to @@ -6,7 +6,7 @@ * * Original version written by Udo Richter <udo_richter@gmx.de>. * - * $Id: shutdown.c 1.5 2008/02/24 10:29:00 kls Exp $ + * $Id: shutdown.c 2.1 2013/02/18 10:33:26 kls Exp $ */ #include "shutdown.h" @@ -117,7 +117,7 @@ void cShutdownHandler::CheckManualStart(int ManualStart) else { // Set inactive from now on dsyslog("scheduled wakeup time in %ld minutes, assuming automatic start of VDR", Delta / 60); - SetUserInactive(); + SetUserInactiveTimeout(-3, true); } } @@ -147,9 +147,14 @@ void cShutdownHandler::SetUserInactiveTimeout(int Seconds, bool Force) activeTimeout = 0; return; } - if (Seconds < 0) - Seconds = Setup.MinUserInactivity * 60; - activeTimeout = time(NULL) + Seconds; + if (Seconds >= 0) + activeTimeout = time(NULL) + Seconds; + else if (Seconds == -1) + activeTimeout = time(NULL) + Setup.MinUserInactivity * 60; + else if (Seconds == -2) + activeTimeout = 0; + else if (Seconds == -3) + activeTimeout = 1; } bool cShutdownHandler::ConfirmShutdown(bool Interactive) @@ -6,7 +6,7 @@ * * Original version written by Udo Richter <udo_richter@gmx.de>. * - * $Id: shutdown.h 1.1 2007/02/24 17:23:59 kls Exp $ + * $Id: shutdown.h 2.1 2013/02/18 10:35:27 kls Exp $ */ #ifndef __SHUTDOWN_H @@ -38,7 +38,7 @@ public: class cShutdownHandler { private: time_t activeTimeout; - ///< Time when VDR will become non-interactive. 0 means never. + ///< Time when VDR will become non-interactive. 0 means never, 1 means unknown time ago. time_t retry; ///< Time for retrying the shutdown. char *shutdownCommand; @@ -73,15 +73,18 @@ public: ///< Check whether VDR is in interactive mode or non-interactive mode (waiting for shutdown). ///< AtTime checks whether VDR will probably be inactive at that time. time_t GetUserInactiveTime(void) { return activeTimeout; } - ///< Time when user will become non-inactive, or 0 if never. + ///< Time when user will become non-inactive, or 0 if never, 1 if a long time ago void SetUserInactiveTimeout(int Seconds = -1, bool Force = false); - ///< Set the time when VDR will switch into non-interactive mode or power down. - ///< -1 means Setup.MinUserInactivity in the future. - ///< Otherwise, seconds in the future. - ///< If MinUserInactivity = 0 and Force = false, Seconds is ignored and VDR will - ///< stay interactive forever. + ///< Set the time in the future when VDR will switch into non-interactive mode or power down. + ///< Seconds >= 0 means that many seconds in the future. + ///< Seconds = -1 means Setup.MinUserInactivity in the future. + ///< Seconds = -2 means never. + ///< Seconds = -3 means a long, unknown time ago. + ///< Setup.MinUserInactivity = 0 will overrule this, unless Force = true is given. + ///< If Setup.MinUserInactivity = 0 and Force = false, Seconds is ignored and VDR will + ///< stay interactive forever (like Seconds = -2). void SetUserInactive(void) { SetUserInactiveTimeout(0, true); } - ///< Set VDR manually into non-interactive mode. + ///< Set VDR manually into non-interactive mode from now on. bool Retry(time_t AtTime = 0) { return retry <= (AtTime ? AtTime : time(NULL)); } ///< Check whether its time to re-try the shutdown. ///< AtTime checks whether VDR will probably be inactive at that time. |