summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2006-12-02 10:35:27 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2006-12-02 10:35:27 +0100
commit661da094e14b6ab76eae98a5eeb2c3ac6c914df4 (patch)
treebe9e175c7df58027f867e85e2329820781fa0e55
parentddcb37300faca0631f5cbd931f5174fe35c27e38 (diff)
downloadvdr-661da094e14b6ab76eae98a5eeb2c3ac6c914df4.tar.gz
vdr-661da094e14b6ab76eae98a5eeb2c3ac6c914df4.tar.bz2
Now calling cPluginManager::Active() only if VDR is really trying to shut down, and waiting for 5 minutes before calling it again
-rw-r--r--CONTRIBUTORS4
-rw-r--r--HISTORY4
-rw-r--r--vdr.c8
3 files changed, 14 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index c7869564..2a9ee3d1 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1476,6 +1476,7 @@ Udo Richter <udo_richter@gmx.de>
for suggesting that the function cThread::Cancel() should only set 'running' to
false and not actually kill the thread if the special value -1 is given
or fixing a possible segfault in cSkins::Message()
+ for some hints on how to improve handling cPluginManager::Active()
Sven Kreiensen <svenk@kammer.uni-hannover.de>
for his help in keeping 'channels.conf.terr' up to date
@@ -2038,3 +2039,6 @@ Boguslaw Juza <bogdan@uci.agh.edu.pl>
Ulf Kiener <webmaster@ulf-kiener.de>
for reporting a problem with audio track descriptions in the DVD plugin after a
replay has been stopped
+
+Jörg Wendel <vdr-ml@jwendel.de>
+ for reporting that cPlugin::Active() was called too often
diff --git a/HISTORY b/HISTORY
index a68ce996..7aeb1345 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5002,3 +5002,7 @@ Video Disk Recorder Revision History
- Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
Brugger). This required the APIVERSION to be increased, so plugins will have to
be recompiled.
+- Now calling cPluginManager::Active() only if VDR is really trying to shut down,
+ and waiting for 5 minutes before calling it again (thanks to Jörg Wendel for
+ reporting that cPlugin::Active() was called too often, and to Udo Richter for
+ some hints on how to improve this).
diff --git a/vdr.c b/vdr.c
index 73c5c918..d3ecc31a 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.280 2006/10/14 10:01:32 kls Exp $
+ * $Id: vdr.c 1.281 2006/12/02 10:33:35 kls Exp $
*/
#include <getopt.h>
@@ -1154,11 +1154,15 @@ int main(int argc, char *argv[])
Skins.Message(mtInfo, tr("Editing process finished"));
}
}
- if (!Interact && ((!cRecordControls::Active() && !cCutter::Active() && !cPluginManager::Active() && (!Interface->HasSVDRPConnection() || UserShutdown)) || ForceShutdown)) {
+ if (!Interact && ((!cRecordControls::Active() && !cCutter::Active() && (!Interface->HasSVDRPConnection() || UserShutdown)) || ForceShutdown)) {
time_t Now = time(NULL);
if (Now - LastActivity > ACTIVITYTIMEOUT) {
// Shutdown:
if (Shutdown && (Setup.MinUserInactivity || LastActivity == 1) && Now - LastActivity > Setup.MinUserInactivity * 60) {
+ if (!ForceShutdown && cPluginManager::Active()) {
+ LastActivity = Now - Setup.MinUserInactivity * 60 + SHUTDOWNRETRY; // try again later
+ continue;
+ }
cTimer *timer = Timers.GetNextActiveTimer();
time_t Next = timer ? timer->StartTime() : 0;
time_t Delta = timer ? Next - Now : 0;