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