Rob Shearman : imm32: Lazily allocated thread-local data.

Alexandre Julliard julliard at winehq.org
Tue Feb 24 10:21:55 CST 2009


Module: wine
Branch: master
Commit: e926c62c43984a7459f3d0ce1ec6104d348bf974
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e926c62c43984a7459f3d0ce1ec6104d348bf974

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Tue Feb 24 14:52:57 2009 +0000

imm32: Lazily allocated thread-local data.

---

 dlls/imm32/imm.c |   25 ++++++++++---------------
 1 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 82868be..c7d170c 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -220,19 +220,15 @@ static DWORD convert_candidatelist_AtoW(
 
 static IMMThreadData* IMM_GetThreadData(void)
 {
-    return TlsGetValue(tlsIndex);
-}
-
-static BOOL IMM_InitThreadData(void)
-{
-    IMMThreadData* data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
-                                    sizeof(IMMThreadData));
-    if (!data) return FALSE;
-
-    TlsSetValue(tlsIndex,data);
-
-    TRACE("Thread Data Created\n");
-    return TRUE;
+    IMMThreadData* data = TlsGetValue(tlsIndex);
+    if (!data)
+    {
+        data = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                         sizeof(IMMThreadData));
+        TlsSetValue(tlsIndex,data);
+        TRACE("Thread Data Created\n");
+    }
+    return data;
 }
 
 static void IMM_FreeThreadData(void)
@@ -384,11 +380,10 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved)
         case DLL_PROCESS_ATTACH:
             IMM_RegisterMessages();
             tlsIndex = TlsAlloc();
-            if (tlsIndex == TLS_OUT_OF_INDEXES || !IMM_InitThreadData())
+            if (tlsIndex == TLS_OUT_OF_INDEXES)
                 return FALSE;
             break;
         case DLL_THREAD_ATTACH:
-            IMM_InitThreadData();
             break;
         case DLL_THREAD_DETACH:
             IMM_FreeThreadData();




More information about the wine-cvs mailing list