summaryrefslogtreecommitdiffstats
path: root/generic/tclNotify.c
diff options
context:
space:
mode:
authordas <das>2005-04-26 00:44:50 (GMT)
committerdas <das>2005-04-26 00:44:50 (GMT)
commitec3f17501d816894810d4d4ea984e4f60e6217fe (patch)
tree870018fbbebc7227bc3dc1184a844d0917132e2c /generic/tclNotify.c
parenta03466eb703f065ba168616a8322005b0555df91 (diff)
downloadtcl-ec3f17501d816894810d4d4ea984e4f60e6217fe.zip
tcl-ec3f17501d816894810d4d4ea984e4f60e6217fe.tar.gz
tcl-ec3f17501d816894810d4d4ea984e4f60e6217fe.tar.bz2
* compat/string.h: fixed memchr() protoype for __APPLE__ so that we
build on Mac OS X 10.1 again. * generic/tclNotify.c (TclFinalizeNotifier): fixed notifier not being finalized in unthreaded core (was testing for notifier initialization in current thread by checking thread id != 0 but thread id is always 0 in untreaded core). * win/tclWinNotify.c (Tcl_WaitForEvent): * unix/tclUnixNotfy.c (Tcl_WaitForEvent): don't call ScaleTimeProc for zero wait times (as specified in TIP 233). * unix/Makefile.in: added @PLAT_SRCS@ to SRCS and split out NOTIFY_SRCS from UNIX_SRCS for parity with UNIX_OBJS & NOTIFY_OBJS. * unix/tcl.m4 (Darwin): added configure checks for recently added linker flags -single_module and -search_paths_first to allow building with older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD and not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from Tk of symbols from libtclstub to avoid duplicate symbol warnings, added PLAT_SRCS definition for Mac OS X, defined MODULE_SCOPE to __private_extern__. (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check. * unix/configure: autoconf-2.59
Diffstat (limited to 'generic/tclNotify.c')
-rw-r--r--generic/tclNotify.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/generic/tclNotify.c b/generic/tclNotify.c
index e5a438f..4a343aa 100644
--- a/generic/tclNotify.c
+++ b/generic/tclNotify.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclNotify.c,v 1.16 2004/11/30 19:34:49 dgp Exp $
+ * RCS: @(#) $Id: tclNotify.c,v 1.17 2005/04/26 00:45:01 das Exp $
*/
#include "tclInt.h"
@@ -67,6 +67,7 @@ typedef struct ThreadSpecificData {
Tcl_ThreadId threadId; /* Thread that owns this notifier instance. */
ClientData clientData; /* Opaque handle for platform specific
* notifier. */
+ int initialized; /* 1 if notifier has been initialized. */
struct ThreadSpecificData *nextPtr;
/* Next notifier in global list of notifiers.
* Access is controlled by the listLock global
@@ -124,6 +125,7 @@ TclInitNotifier()
tsdPtr = TCL_TSD_INIT(&dataKey);
tsdPtr->threadId = threadId;
tsdPtr->clientData = tclStubs.tcl_InitNotifier();
+ tsdPtr->initialized = 1;
tsdPtr->nextPtr = firstNotifierPtr;
firstNotifierPtr = tsdPtr;
}
@@ -163,7 +165,7 @@ TclFinalizeNotifier()
ThreadSpecificData **prevPtrPtr;
Tcl_Event *evPtr, *hold;
- if (tsdPtr->threadId == (Tcl_ThreadId)0) {
+ if (!tsdPtr->initialized) {
return; /* Notifier not initialized for the current thread */
}
@@ -190,6 +192,7 @@ TclFinalizeNotifier()
break;
}
}
+ tsdPtr->initialized = 0;
Tcl_MutexUnlock(&listLock);
}