From 2d68b323c74f3ba2d03d843132ebcec1d712b982 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 24 Sep 2006 12:54:47 +0200 Subject: [PATCH] The function cThread::Cancel() now only sets 'running' to false and does not actually kill the thread if the special value -1 is given --- CONTRIBUTORS | 2 ++ HISTORY | 5 +++++ config.h | 4 ++-- thread.c | 4 ++-- thread.h | 4 +++- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6d853362..dbae9b03 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1468,6 +1468,8 @@ Udo Richter for reporting a problem with cPlugin::ConfigDirectory() in case a plugin calls it from a separate thread for reporting that an assignment in svdrp.c didn't use the cTimer::operator=()) + 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 Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date diff --git a/HISTORY b/HISTORY index 455a6a1c..17191e00 100644 --- a/HISTORY +++ b/HISTORY @@ -4930,3 +4930,8 @@ Video Disk Recorder Revision History 2006-09-23: Version 1.4.3 - Official release. + +2006-09-24: Version 1.4.3-1 + +- The function cThread::Cancel() now only sets 'running' to false and does not + actually kill the thread if the special value -1 is given (suggested by Udo Richter). diff --git a/config.h b/config.h index bb9070e9..bc3ebd64 100644 --- a/config.h +++ b/config.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.271 2006/09/23 13:56:08 kls Exp $ + * $Id: config.h 1.272 2006/09/24 10:09:25 kls Exp $ */ #ifndef __CONFIG_H @@ -21,7 +21,7 @@ // VDR's own version number: -#define VDRVERSION "1.4.3" +#define VDRVERSION "1.4.3-1" #define VDRVERSNUM 10403 // Version * 10000 + Major * 100 + Minor // The plugin API's version number: diff --git a/thread.c b/thread.c index 8b6e58f4..2e145e50 100644 --- a/thread.c +++ b/thread.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: thread.c 1.57 2006/08/20 10:20:44 kls Exp $ + * $Id: thread.c 1.58 2006/09/24 12:54:47 kls Exp $ */ #include "thread.h" @@ -293,7 +293,7 @@ bool cThread::Active(void) void cThread::Cancel(int WaitSeconds) { running = false; - if (active) { + if (active && WaitSeconds > -1) { if (WaitSeconds > 0) { for (time_t t0 = time(NULL) + WaitSeconds; time(NULL) < t0; ) { if (!Active()) diff --git a/thread.h b/thread.h index 341e87d0..6211e2c1 100644 --- a/thread.h +++ b/thread.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: thread.h 1.36 2006/01/08 11:40:23 kls Exp $ + * $Id: thread.h 1.37 2006/09/24 10:10:37 kls Exp $ */ #ifndef __THREAD_H @@ -103,6 +103,8 @@ protected: ///< the Action() loop can finish in an orderly fashion and then waiting ///< up to WaitSeconds seconds for the thread to actually end. If the ///< thread doesn't end by itself, it is killed. + ///< If WaitSeconds is -1, only 'running' is set to false and Cancel() + ///< returns immediately, without killing the thread. public: cThread(const char *Description = NULL); ///< Creates a new thread.