Module: wine Branch: master Commit: e926c62c43984a7459f3d0ce1ec6104d348bf974 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e926c62c43984a7459f3d0ce1e...
Author: Rob Shearman robertshearman@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();