Call DisableThreadLibraryCalls() in order to slightly improve performance

Dmitry Timoshkov dmitry at baikal.ru
Mon Jun 30 03:38:15 CDT 2003


Hello,

Changelog:
    Dmitry Timoshkov <dmitry at codeweavers.com>
    For all DLLs with defined DllMain and which do not require
    DLL_THREAD_ATTACH/DLL_THREAD_DETACH notifications, call
    DisableThreadLibraryCalls() in order to slightly improve
    performance on thread creation/exiting.

diff -u cvs/hq/wine/dlls/avifil32/factory.c wine/dlls/avifil32/factory.c
--- cvs/hq/wine/dlls/avifil32/factory.c	Sat Apr 19 10:56:29 2003
+++ wine/dlls/avifil32/factory.c	Mon Jun 30 17:16:19 2003
@@ -204,14 +204,10 @@ BOOL WINAPI DllMain(HINSTANCE hInstDll, 
 
   switch (fdwReason) {
   case DLL_PROCESS_ATTACH:
-    if (AVIFILE_hModule == NULL)
-      AVIFILE_hModule = (HMODULE)hInstDll;
+    DisableThreadLibraryCalls(hInstDll);
+    AVIFILE_hModule = (HMODULE)hInstDll;
     break;
   case DLL_PROCESS_DETACH:
-    break;
-  case DLL_THREAD_ATTACH:
-    break;
-  case DLL_THREAD_DETACH:
     break;
   };
 
diff -u cvs/hq/wine/dlls/comctl32/commctrl.c wine/dlls/comctl32/commctrl.c
--- cvs/hq/wine/dlls/comctl32/commctrl.c	Sun May 11 13:30:00 2003
+++ wine/dlls/comctl32/commctrl.c	Mon Jun 30 16:35:41 2003
@@ -145,6 +145,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
+
             COMCTL32_hModule = (HMODULE)hinstDLL;
 
             /* create private heap */
diff -u cvs/hq/wine/dlls/crtdll/crtdll_main.c wine/dlls/crtdll/crtdll_main.c
--- cvs/hq/wine/dlls/crtdll/crtdll_main.c	Fri Jan  3 13:20:46 2003
+++ wine/dlls/crtdll/crtdll_main.c	Mon Jun 30 17:17:37 2003
@@ -88,6 +88,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL,D
   if (fdwReason == DLL_PROCESS_ATTACH)
   {
     DWORD version = GetVersion();
+
+    DisableThreadLibraryCalls(hinstDLL);
+
     CRTDLL__basemajor_dll   = (version >> 24) & 0xFF;
     CRTDLL__baseminor_dll   = (version >> 16) & 0xFF;
     CRTDLL__baseversion_dll = (version >> 16);
diff -u cvs/hq/wine/dlls/d3d8/d3d8_main.c wine/dlls/d3d8/d3d8_main.c
--- cvs/hq/wine/dlls/d3d8/d3d8_main.c	Sat Jun 28 14:30:38 2003
+++ wine/dlls/d3d8/d3d8_main.c	Mon Jun 30 16:40:55 2003
@@ -63,7 +63,11 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
     TRACE("fdwReason=%ld\n", fdwReason);
        if (fdwReason == DLL_PROCESS_ATTACH)
        {
-           HMODULE mod = GetModuleHandleA( "x11drv.dll" );
+           HMODULE mod;
+
+           DisableThreadLibraryCalls(hInstDLL);
+
+           mod = GetModuleHandleA( "x11drv.dll" );
            if (mod)
            {
                wine_tsx11_lock_ptr   = (void *)GetProcAddress( mod, "wine_tsx11_lock" );
diff -u cvs/hq/wine/dlls/ddraw/main.c wine/dlls/ddraw/main.c
--- cvs/hq/wine/dlls/ddraw/main.c	Fri Jun  6 13:01:37 2003
+++ wine/dlls/ddraw/main.c	Mon Jun 30 16:45:24 2003
@@ -579,7 +579,11 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
-        HMODULE mod = GetModuleHandleA( "x11drv.dll" );
+        HMODULE mod;
+
+        DisableThreadLibraryCalls(hInstDLL);
+
+        mod = GetModuleHandleA( "x11drv.dll" );
         if (mod)
         {
             wine_tsx11_lock_ptr   = (void *)GetProcAddress( mod, "wine_tsx11_lock" );
diff -u cvs/hq/wine/dlls/dinput/dinput_main.c wine/dlls/dinput/dinput_main.c
--- cvs/hq/wine/dlls/dinput/dinput_main.c	Wed Jun 25 15:58:07 2003
+++ wine/dlls/dinput/dinput_main.c	Mon Jun 30 16:46:08 2003
@@ -60,6 +60,7 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWO
     switch(reason)
     {
       case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(inst);
         DINPUT_instance = inst;
         break;
       case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/dmusic/dmusic_main.c wine/dlls/dmusic/dmusic_main.c
--- cvs/hq/wine/dlls/dmusic/dmusic_main.c	Sat Jun 28 14:30:39 2003
+++ wine/dlls/dmusic/dmusic_main.c	Mon Jun 30 16:48:48 2003
@@ -107,6 +107,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 {
 	if (fdwReason == DLL_PROCESS_ATTACH)
 	{
+            DisableThreadLibraryCalls(hinstDLL);
 		/* FIXME: Initialisation */
 	}
 	else if (fdwReason == DLL_PROCESS_DETACH)
diff -u cvs/hq/wine/dlls/dplayx/dplayx_main.c wine/dlls/dplayx/dplayx_main.c
--- cvs/hq/wine/dlls/dplayx/dplayx_main.c	Tue Nov  5 14:52:30 2002
+++ wine/dlls/dplayx/dplayx_main.c	Mon Jun 30 16:51:15 2003
@@ -38,6 +38,7 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL,
   switch ( fdwReason )
   {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         /* First instance perform construction of global processor data */
         return DPLAYX_ConstructData();
 
@@ -45,9 +46,6 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL,
         /* Last instance performs destruction of global processor data */
         return DPLAYX_DestructData();
 
-    case DLL_THREAD_ATTACH: /* Do nothing */
-    case DLL_THREAD_DETACH: /* Do nothing */
-      break;
     default:
       break;
 
diff -u cvs/hq/wine/dlls/dpnhpast/main.c wine/dlls/dpnhpast/main.c
--- cvs/hq/wine/dlls/dpnhpast/main.c	Wed May  7 14:54:35 2003
+++ wine/dlls/dpnhpast/main.c	Mon Jun 30 16:51:39 2003
@@ -35,6 +35,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 
 	if (fdwReason == DLL_PROCESS_ATTACH)
 	{
+            DisableThreadLibraryCalls(hinstDLL);
 		/* FIXME: Initialisation */
 	}
 	else if (fdwReason == DLL_PROCESS_DETACH)
diff -u cvs/hq/wine/dlls/gdi/gdi_main.c wine/dlls/gdi/gdi_main.c
--- cvs/hq/wine/dlls/gdi/gdi_main.c	Tue Nov  5 14:52:30 2002
+++ wine/dlls/gdi/gdi_main.c	Mon Jun 30 16:28:38 2003
@@ -32,6 +32,7 @@
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID lpvReserved)
 {
     if (reason != DLL_PROCESS_ATTACH) return TRUE;
+    DisableThreadLibraryCalls(hinstDLL);
     return GDI_Init();
 }
 
diff -u cvs/hq/wine/dlls/imagehlp/imagehlp_main.c wine/dlls/imagehlp/imagehlp_main.c
--- cvs/hq/wine/dlls/imagehlp/imagehlp_main.c	Sat Mar 29 11:15:17 2003
+++ wine/dlls/imagehlp/imagehlp_main.c	Mon Jun 30 16:52:43 2003
@@ -40,15 +40,12 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
   switch(fdwReason)
     {
     case DLL_PROCESS_ATTACH:
+      DisableThreadLibraryCalls(hinstDLL);
       IMAGEHLP_hHeap = HeapCreate(0, 0x10000, 0);
       break;
     case DLL_PROCESS_DETACH:
       HeapDestroy(IMAGEHLP_hHeap);
       IMAGEHLP_hHeap = NULL;
-      break;
-    case DLL_THREAD_ATTACH:
-      break;
-    case DLL_THREAD_DETACH:
       break;
     default:
       break;
diff -u cvs/hq/wine/dlls/imm32/imm.c wine/dlls/imm32/imm.c
--- cvs/hq/wine/dlls/imm32/imm.c	Thu May 15 19:26:00 2003
+++ wine/dlls/imm32/imm.c	Mon Jun 30 16:53:03 2003
@@ -86,6 +86,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
     switch (fdwReason)
     {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
             hImeInst = hInstDLL;
             break;
         case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/msacm/msacm32_main.c wine/dlls/msacm/msacm32_main.c
--- cvs/hq/wine/dlls/msacm/msacm32_main.c	Fri Jan 17 19:52:22 2003
+++ wine/dlls/msacm/msacm32_main.c	Mon Jun 30 16:54:17 2003
@@ -44,6 +44,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         MSACM_hHeap = HeapCreate(0, 0x10000, 0);
         MSACM_hInstance32 = hInstDLL;
         MSACM_RegisterAllDrivers();
@@ -53,10 +54,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
         HeapDestroy(MSACM_hHeap);
         MSACM_hHeap = NULL;
         MSACM_hInstance32 = NULL;
-	break;
-    case DLL_THREAD_ATTACH:
-	break;
-    case DLL_THREAD_DETACH:
 	break;
     default:
 	break;
diff -u cvs/hq/wine/dlls/msisys/Makefile.in wine/dlls/msisys/Makefile.in
--- cvs/hq/wine/dlls/msisys/Makefile.in	Sat May 18 16:24:48 2002
+++ wine/dlls/msisys/Makefile.in	Mon Jun 30 17:19:01 2003
@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = msisys.ocx
+IMPORTS   = kernel32
 EXTRALIBS = $(LIBUUID)
 
 LDDLLFLAGS = @LDDLLFLAGS@
diff -u cvs/hq/wine/dlls/msisys/msisys.c wine/dlls/msisys/msisys.c
--- cvs/hq/wine/dlls/msisys/msisys.c	Tue Nov  5 14:52:32 2002
+++ wine/dlls/msisys/msisys.c	Mon Jun 30 16:55:15 2003
@@ -62,15 +62,12 @@ BOOL WINAPI DllMain(
 	switch ( fdwReason )
 	{
 	case DLL_PROCESS_ATTACH:
+                DisableThreadLibraryCalls(hInstDLL);
 		if ( !MSISYS_InitProcess() )
 			return FALSE;
 		break;
 	case DLL_PROCESS_DETACH:
 		MSISYS_UninitProcess();
-		break;
-	case DLL_THREAD_ATTACH:
-		break;
-	case DLL_THREAD_DETACH:
 		break;
 	}
 
diff -u cvs/hq/wine/dlls/msvideo/msrle32/msrle32.c wine/dlls/msvideo/msrle32/msrle32.c
--- cvs/hq/wine/dlls/msvideo/msrle32/msrle32.c	Mon Jun 30 16:20:48 2003
+++ wine/dlls/msvideo/msrle32/msrle32.c	Mon Jun 30 16:56:25 2003
@@ -1902,13 +1902,10 @@ BOOL WINAPI DllMain(HINSTANCE hModule, D
 
   switch (dwReason) {
   case DLL_PROCESS_ATTACH:
-    if (MSRLE32_hModule == 0)
-      MSRLE32_hModule = hModule;
-    break;
-  case DLL_THREAD_ATTACH:
-    break;
-  case DLL_THREAD_DETACH:
+    DisableThreadLibraryCalls(hModule);
+    MSRLE32_hModule = hModule;
     break;
+
   case DLL_PROCESS_DETACH:
     break;
   };
diff -u cvs/hq/wine/dlls/netapi32/netapi32.c wine/dlls/netapi32/netapi32.c
--- cvs/hq/wine/dlls/netapi32/netapi32.c	Wed Jun 25 15:58:24 2003
+++ wine/dlls/netapi32/netapi32.c	Mon Jun 30 16:57:09 2003
@@ -110,6 +110,7 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL,
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             NETAPI32_hModule = hinstDLL;
 	    break;
 	case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/odbc32/Makefile.in wine/dlls/odbc32/Makefile.in
--- cvs/hq/wine/dlls/odbc32/Makefile.in	Mon Jun  3 13:00:57 2002
+++ wine/dlls/odbc32/Makefile.in	Mon Jun 30 17:20:58 2003
@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = odbc32.dll
+IMPORTS   = kernel32
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
diff -u cvs/hq/wine/dlls/odbc32/proxyodbc.c wine/dlls/odbc32/proxyodbc.c
--- cvs/hq/wine/dlls/odbc32/proxyodbc.c	Sun Mar 16 19:32:37 2003
+++ wine/dlls/odbc32/proxyodbc.c	Mon Jun 30 16:57:44 2003
@@ -176,6 +176,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
        TRACE("Loading ODBC...\n");
+       DisableThreadLibraryCalls(hinstDLL);
        if (ODBC_LoadDriverManager())
           ODBC_LoadDMFunctions();
     }
diff -u cvs/hq/wine/dlls/ole32/ole32_main.c wine/dlls/ole32/ole32_main.c
--- cvs/hq/wine/dlls/ole32/ole32_main.c	Tue May 20 14:07:27 2003
+++ wine/dlls/ole32/ole32_main.c	Mon Jun 30 16:58:19 2003
@@ -97,6 +97,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         OLE32_hInstance = hinstDLL;
         COMPOBJ_InitProcess();
 	if (TRACE_ON(ole)) CoRegisterMallocSpy((LPVOID)-1);
diff -u cvs/hq/wine/dlls/opengl32/wgl.c wine/dlls/opengl32/wgl.c
--- cvs/hq/wine/dlls/opengl32/wgl.c	Wed May  7 14:54:40 2003
+++ wine/dlls/opengl32/wgl.c	Mon Jun 30 16:59:15 2003
@@ -683,6 +683,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DW
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinst);
         return process_attach();
     case DLL_PROCESS_DETACH:
         process_detach();
diff -u cvs/hq/wine/dlls/quartz/main.c wine/dlls/quartz/main.c
--- cvs/hq/wine/dlls/quartz/main.c	Sat Jun 14 15:30:24 2003
+++ wine/dlls/quartz/main.c	Mon Jun 30 16:59:51 2003
@@ -34,6 +34,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 {
     switch(fdwReason) {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
 	    break;
 	case DLL_PROCESS_DETACH:
 	    break;
diff -u cvs/hq/wine/dlls/richedit/richedit.c wine/dlls/richedit/richedit.c
--- cvs/hq/wine/dlls/richedit/richedit.c	Sun Mar 16 19:32:38 2003
+++ wine/dlls/richedit/richedit.c	Mon Jun 30 17:00:12 2003
@@ -71,6 +71,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
     switch (fdwReason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         /* create private heap */
         RICHED32_hHeap = HeapCreate (0, 0x10000, 0);
         /* register the Rich Edit class */
diff -u cvs/hq/wine/dlls/rpcrt4/rpcrt4_main.c wine/dlls/rpcrt4/rpcrt4_main.c
--- cvs/hq/wine/dlls/rpcrt4/rpcrt4_main.c	Wed May 14 15:25:51 2003
+++ wine/dlls/rpcrt4/rpcrt4_main.c	Mon Jun 30 17:00:40 2003
@@ -167,6 +167,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 {
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         master_mutex = CreateMutexA( NULL, FALSE, RPCSS_MASTER_MUTEX_NAME);
         if (!master_mutex)
           ERR("Failed to create master mutex\n");
diff -u cvs/hq/wine/dlls/serialui/confdlg.c wine/dlls/serialui/confdlg.c
--- cvs/hq/wine/dlls/serialui/confdlg.c	Wed Jun 25 15:58:31 2003
+++ wine/dlls/serialui/confdlg.c	Mon Jun 30 17:01:09 2003
@@ -65,6 +65,7 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL,
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             SERIALUI_hModule = hinstDLL;
 	    break;
 	case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/shlwapi/shlwapi_main.c wine/dlls/shlwapi/shlwapi_main.c
--- cvs/hq/wine/dlls/shlwapi/shlwapi_main.c	Thu Mar 20 11:23:37 2003
+++ wine/dlls/shlwapi/shlwapi_main.c	Mon Jun 30 17:04:03 2003
@@ -65,6 +65,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 	switch (fdwReason)
 	{
 	  case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
 	    shlwapi_hInstance = hinstDLL;
 	    SHLWAPI_ThreadRef_index = TlsAlloc();
 	    break;
diff -u cvs/hq/wine/dlls/snmpapi/Makefile.in wine/dlls/snmpapi/Makefile.in
--- cvs/hq/wine/dlls/snmpapi/Makefile.in	Sat May 18 16:24:49 2002
+++ wine/dlls/snmpapi/Makefile.in	Mon Jun 30 17:22:49 2003
@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = snmpapi.dll
+IMPORTS   = kernel32
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
diff -u cvs/hq/wine/dlls/snmpapi/main.c wine/dlls/snmpapi/main.c
--- cvs/hq/wine/dlls/snmpapi/main.c	Tue Nov  5 14:52:35 2002
+++ wine/dlls/snmpapi/main.c	Mon Jun 30 17:04:47 2003
@@ -38,12 +38,9 @@ BOOL WINAPI DllMain(
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         break;
     case DLL_PROCESS_DETACH:
-        break;
-    case DLL_THREAD_ATTACH:
-        break;
-    case DLL_THREAD_DETACH:
         break;
     }
 
diff -u cvs/hq/wine/dlls/ttydrv/ttydrv_main.c wine/dlls/ttydrv/ttydrv_main.c
--- cvs/hq/wine/dlls/ttydrv/ttydrv_main.c	Sat Dec  7 20:04:38 2002
+++ wine/dlls/ttydrv/ttydrv_main.c	Mon Jun 30 17:05:42 2003
@@ -76,6 +76,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DW
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinst);
         process_attach();
         break;
 
diff -u cvs/hq/wine/dlls/twain/twain32_main.c wine/dlls/twain/twain32_main.c
--- cvs/hq/wine/dlls/twain/twain32_main.c	Tue Nov  5 14:52:35 2002
+++ wine/dlls/twain/twain32_main.c	Mon Jun 30 17:06:11 2003
@@ -33,13 +33,8 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL,
     switch (fdwReason)
     {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             DSM_currentState = 2;
-            break;
-
-        case DLL_THREAD_ATTACH:
-            break;
-
-        case DLL_THREAD_DETACH:
             break;
 
         case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/urlmon/urlmon_main.c wine/dlls/urlmon/urlmon_main.c
--- cvs/hq/wine/dlls/urlmon/urlmon_main.c	Tue Nov  5 14:52:35 2002
+++ wine/dlls/urlmon/urlmon_main.c	Mon Jun 30 17:24:45 2003
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "wtypes.h"
 
@@ -39,6 +39,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, 
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         URLMON_hInstance = hinstDLL;
 	break;
 
diff -u cvs/hq/wine/dlls/winaspi/winaspi32.c wine/dlls/winaspi/winaspi32.c
--- cvs/hq/wine/dlls/winaspi/winaspi32.c	Sun Mar 16 19:32:38 2003
+++ wine/dlls/winaspi/winaspi32.c	Mon Jun 30 17:08:56 2003
@@ -62,14 +62,12 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 	switch( fdwReason )
 	{
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
             SCSI_Init();
             break;
 	case DLL_PROCESS_DETACH:
             DeleteCriticalSection( &ASPI_CritSection );
             break;
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-		break;
 	}
 #endif /* defined(linux) */
 	return TRUE;
diff -u cvs/hq/wine/dlls/winedos/dosvm.c wine/dlls/winedos/dosvm.c
--- cvs/hq/wine/dlls/winedos/dosvm.c	Sat Jun 28 14:30:53 2003
+++ wine/dlls/winedos/dosvm.c	Mon Jun 30 17:09:27 2003
@@ -688,6 +688,7 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL,
 
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
+        DisableThreadLibraryCalls(hinstDLL);
         DOSVM_InitSegments();
 
         event_notifier = CreateEventA(NULL, FALSE, FALSE, NULL);
diff -u cvs/hq/wine/dlls/wineps/init.c wine/dlls/wineps/init.c
--- cvs/hq/wine/dlls/wineps/init.c	Wed Jun 25 15:58:36 2003
+++ wine/dlls/wineps/init.c	Mon Jun 30 17:10:15 2003
@@ -121,6 +121,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DW
     switch(reason) {
 
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinst);
 
 	    PSDRV_Heap = HeapCreate(0, 0x10000, 0);
 	    if (PSDRV_Heap == NULL)
diff -u cvs/hq/wine/dlls/winmm/mciavi/mciavi.c wine/dlls/winmm/mciavi/mciavi.c
--- cvs/hq/wine/dlls/winmm/mciavi/mciavi.c	Wed Feb 12 23:03:21 2003
+++ wine/dlls/winmm/mciavi/mciavi.c	Mon Jun 30 17:11:56 2003
@@ -122,6 +122,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 {
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
 	MCIAVI_hInstance = hInstDLL;
 	break;
     }
diff -u cvs/hq/wine/dlls/winmm/winmm.c wine/dlls/winmm/winmm.c
--- cvs/hq/wine/dlls/winmm/winmm.c	Sun May 11 13:30:12 2003
+++ wine/dlls/winmm/winmm.c	Mon Jun 30 17:12:48 2003
@@ -125,6 +125,8 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
 
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
+
 	if (!WINMM_CreateIData(hInstDLL))
 	    return FALSE;
         if (!MCI_Init() || !MMDRV_Init()) {
@@ -140,9 +142,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
         DRIVER_UnloadAll();
 
 	WINMM_DeleteIData();
-	break;
-    case DLL_THREAD_ATTACH:
-    case DLL_THREAD_DETACH:
 	break;
     }
     return TRUE;
diff -u cvs/hq/wine/dlls/winsock/socket.c wine/dlls/winsock/socket.c
--- cvs/hq/wine/dlls/winsock/socket.c	Thu Jun 26 18:42:51 2003
+++ wine/dlls/winsock/socket.c	Mon Jun 30 17:13:19 2003
@@ -444,6 +444,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, 
     TRACE("%p 0x%lx %p\n", hInstDLL, fdwReason, fImpLoad);
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         opentype_tls_index = TlsAlloc();
         break;
     case DLL_PROCESS_DETACH:
diff -u cvs/hq/wine/dlls/winspool/wspool.c wine/dlls/winspool/wspool.c
--- cvs/hq/wine/dlls/winspool/wspool.c	Thu Jan  9 20:46:14 2003
+++ wine/dlls/winspool/wspool.c	Mon Jun 30 17:14:08 2003
@@ -41,6 +41,8 @@ BOOL WINAPI DllMain(HINSTANCE hInstance,
   {
     case DLL_PROCESS_ATTACH: {
       extern void WINSPOOL_LoadSystemPrinters();
+
+      DisableThreadLibraryCalls(hInstance);
       WINSPOOL_LoadSystemPrinters();
       break;
     }






More information about the wine-patches mailing list