summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorhobbs <hobbs>2002-12-06 23:29:37 (GMT)
committerhobbs <hobbs>2002-12-06 23:29:37 (GMT)
commitdf50e6eb7fcee1b7b60c7dc9c0d1968124197b9e (patch)
tree5929fe9f8d605ca8e874bea4a8c835657cd5367d /win
parent2be80c2ee9e0835f69dbc4773498a020c025bd0c (diff)
downloadtk-df50e6eb7fcee1b7b60c7dc9c0d1968124197b9e.zip
tk-df50e6eb7fcee1b7b60c7dc9c0d1968124197b9e.tar.gz
tk-df50e6eb7fcee1b7b60c7dc9c0d1968124197b9e.tar.bz2
* win/tkWinX.c (TkWinXInit): Move cleanup into an exit handler
* win/tkWin32Dll.c (DllMain): to ensure that it will be called * win/tkWinWm.c (TkWinWmCleanup): without having to unload the dll. Also reset the static int initialized on cleanup to allow reinit.
Diffstat (limited to 'win')
-rw-r--r--win/tkWin32Dll.c23
-rw-r--r--win/tkWinWm.c7
-rw-r--r--win/tkWinX.c8
3 files changed, 20 insertions, 18 deletions
diff --git a/win/tkWin32Dll.c b/win/tkWin32Dll.c
index cc77be7..c8e03c1 100644
--- a/win/tkWin32Dll.c
+++ b/win/tkWin32Dll.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWin32Dll.c,v 1.4 2000/03/31 09:24:26 hobbs Exp $
+ * RCS: @(#) $Id: tkWin32Dll.c,v 1.5 2002/12/06 23:29:37 hobbs Exp $
*/
#include "tkWinInt.h"
@@ -52,10 +52,13 @@ DllEntryPoint(hInst, reason, reserved)
*
* DllMain --
*
- * DLL entry point.
+ * DLL entry point. It is not necessary to do anything here as
+ * Tk will initialize and clean up after itself through other
+ * methods, in order to be consistent whether the build is static
+ * or dynamic.
*
* Results:
- * TRUE on sucess, FALSE on failure.
+ * Always TRUE.
*
* Side effects:
* None.
@@ -69,17 +72,5 @@ DllMain(hInstance, reason, reserved)
DWORD reason;
LPVOID reserved;
{
-
- /*
- * If we are attaching to the DLL from a new process, tell Tk about
- * the hInstance to use. If we are detaching then clean up any
- * data structures related to this DLL.
- */
-
- if (reason == DLL_PROCESS_ATTACH) {
- TkWinXInit(hInstance);
- } else if (reason == DLL_PROCESS_DETACH) {
- TkWinXCleanup(hInstance);
- }
- return(TRUE);
+ return (TRUE);
}
diff --git a/win/tkWinWm.c b/win/tkWinWm.c
index 8442881..69a4bd5 100644
--- a/win/tkWinWm.c
+++ b/win/tkWinWm.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinWm.c,v 1.53 2002/12/01 23:37:54 mdejong Exp $
+ * RCS: @(#) $Id: tkWinWm.c,v 1.54 2002/12/06 23:29:37 hobbs Exp $
*/
#include "tkWinInt.h"
@@ -1680,6 +1680,11 @@ TkWinWmCleanup(hInstance)
}
#endif
+ if (!initialized) {
+ return;
+ }
+ initialized = 0;
+
tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
diff --git a/win/tkWinX.c b/win/tkWinX.c
index 9de5da3..f97db04 100644
--- a/win/tkWinX.c
+++ b/win/tkWinX.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinX.c,v 1.23 2002/06/19 19:37:55 mdejong Exp $
+ * RCS: @(#) $Id: tkWinX.c,v 1.24 2002/12/06 23:29:37 hobbs Exp $
*/
#include "tkWinInt.h"
@@ -249,6 +249,12 @@ TkWinXInit(hInstance)
if (!RegisterClass(&childClass)) {
panic("Unable to register TkChild class");
}
+
+ /*
+ * Make sure we cleanup on finalize.
+ */
+ Tcl_CreateExitHandler((Tcl_ExitProc *) TkWinXCleanup,
+ (ClientData) hInstance);
}
/*