From c7af51870a9a1d3aac81f863b8b16f50c7000963 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 5 May 2006 13:45:42 +0200 Subject: [PATCH] Fixed handling the "Power" key in case a timer is about to start recording --- CONTRIBUTORS | 1 + HISTORY | 2 ++ vdr.c | 25 ++++++++++++++----------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index fe4758b8..b8ef105f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1424,6 +1424,7 @@ Udo Richter no plugin is active for suggesting to add 'eval' to the $VDRCMD call in 'runvdr' to avoid problems with quoting + for fixing handling the "Power" key in case a timer is about to start recording Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date diff --git a/HISTORY b/HISTORY index 289ed52f..91fe0f56 100644 --- a/HISTORY +++ b/HISTORY @@ -4698,3 +4698,5 @@ Video Disk Recorder Revision History (suggested by Udo Richter). - Fixed missing ',' in the Italian and Polish OSD texts (thanks to Marko Mäkelä). - Updated the Czech OSD texts (thanks to Vladimír Bárta). +- Fixed handling the "Power" key in case a timer is about to start recording + (thanks to Udo Richter). diff --git a/vdr.c b/vdr.c index 449eadf7..fc0e360c 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.267 2006/04/29 09:14:06 kls Exp $ + * $Id: vdr.c 1.268 2006/05/05 13:43:32 kls Exp $ */ #include @@ -970,7 +970,7 @@ int main(int argc, char *argv[]) } break; // Power off: - case kPower: + case kPower: { isyslog("Power button pressed"); DELETE_MENU; if (!Shutdown) { @@ -985,8 +985,20 @@ int main(int argc, char *argv[]) } if (cPluginManager::Active(tr("shut down anyway?"))) break; + cTimer *timer = Timers.GetNextActiveTimer(); + time_t Next = timer ? timer->StartTime() : 0; + time_t Delta = timer ? Next - time(NULL) : 0; + if (Next && Delta <= Setup.MinEventTimeout * 60) { + char *buf; + asprintf(&buf, tr("Recording in %ld minutes, shut down anyway?"), Delta / 60); + bool confirm = Interface->Confirm(buf); + free(buf); + if (!confirm) + break; + } ForceShutdown = true; break; + } default: break; } Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time @@ -1121,15 +1133,6 @@ int main(int argc, char *argv[]) else LastActivity = 1; } - if (UserShutdown && Next && Delta <= Setup.MinEventTimeout * 60 && !ForceShutdown) { - char *buf; - asprintf(&buf, tr("Recording in %ld minutes, shut down anyway?"), Delta / 60); - if (Interface->Confirm(buf)) - ForceShutdown = true; - else - UserShutdown = false; - free(buf); - } if (!Next || Delta > Setup.MinEventTimeout * 60 || ForceShutdown) { ForceShutdown = false; if (timer)