diff options
author | hobbs <hobbs> | 2002-12-06 23:29:37 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2002-12-06 23:29:37 (GMT) |
commit | df50e6eb7fcee1b7b60c7dc9c0d1968124197b9e (patch) | |
tree | 5929fe9f8d605ca8e874bea4a8c835657cd5367d /win | |
parent | 2be80c2ee9e0835f69dbc4773498a020c025bd0c (diff) | |
download | tk-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.c | 23 | ||||
-rw-r--r-- | win/tkWinWm.c | 7 | ||||
-rw-r--r-- | win/tkWinX.c | 8 |
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); } /* |