diff --git a/reactos/dll/win32/imm32/CMakeLists.txt b/reactos/dll/win32/imm32/CMakeLists.txt index 545359be7a8..4697eb58eae 100644 --- a/reactos/dll/win32/imm32/CMakeLists.txt +++ b/reactos/dll/win32/imm32/CMakeLists.txt @@ -1,11 +1,10 @@ +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) add_definitions(-D__WINESRC__) remove_definitions(-D_WIN32_WINNT=0x502) add_definitions(-D_WIN32_WINNT=0x600) -include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) - spec2def(imm32.dll imm32.spec ADD_IMPORTLIB) list(APPEND SOURCE @@ -13,9 +12,7 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/imm32_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/imm32.def) -add_library(imm32 SHARED - ${SOURCE} - version.rc) +add_library(imm32 SHARED ${SOURCE} version.rc) if(MSVC) # FIXME: http://www.cmake.org/Bug/view.php?id=12998 diff --git a/reactos/dll/win32/imm32/imm.c b/reactos/dll/win32/imm32/imm.c index 74dafdebf50..78b2b90da5b 100644 --- a/reactos/dll/win32/imm32/imm.c +++ b/reactos/dll/win32/imm32/imm.c @@ -38,12 +38,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(imm); -typedef struct tagIMCCInternal -{ - DWORD dwLock; - DWORD dwSize; -} IMCCInternal; - #define MAKE_FUNCPTR(f) typeof(f) * p##f typedef struct _tagImmHkl{ struct list entry; @@ -413,6 +407,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved) IMM_FreeThreadData(); break; case DLL_PROCESS_DETACH: + if (lpReserved) break; IMM_FreeThreadData(); IMM_FreeAllImmHkl(); TlsFree(tlsIndex); @@ -2632,8 +2627,9 @@ LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC) BOOL WINAPI ImmUnlockIMC(HIMC hIMC) { InputContextData *data = hIMC; - data->dwLock--; - return (data->dwLock!=0); + if (data->dwLock) + data->dwLock--; + return TRUE; } /*********************************************************************** @@ -2650,15 +2646,7 @@ DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC) */ HIMCC WINAPI ImmCreateIMCC(DWORD size) { - IMCCInternal *internal; - int real_size = size + sizeof(IMCCInternal); - - internal = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, real_size); - if (internal == NULL) - return NULL; - - internal->dwSize = size; - return internal; + return GlobalAlloc(GMEM_ZEROINIT | GMEM_MOVEABLE, size); } /*********************************************************************** @@ -2666,8 +2654,7 @@ HIMCC WINAPI ImmCreateIMCC(DWORD size) */ HIMCC WINAPI ImmDestroyIMCC(HIMCC block) { - HeapFree(GetProcessHeap(),0,block); - return NULL; + return GlobalFree(block); } /*********************************************************************** @@ -2675,11 +2662,7 @@ HIMCC WINAPI ImmDestroyIMCC(HIMCC block) */ LPVOID WINAPI ImmLockIMCC(HIMCC imcc) { - IMCCInternal *internal; - internal = imcc; - - internal->dwLock ++; - return internal + 1; + return GlobalLock(imcc); } /*********************************************************************** @@ -2687,11 +2670,7 @@ LPVOID WINAPI ImmLockIMCC(HIMCC imcc) */ BOOL WINAPI ImmUnlockIMCC(HIMCC imcc) { - IMCCInternal *internal; - internal = imcc; - - internal->dwLock --; - return (internal->dwLock!=0); + return GlobalUnlock(imcc); } /*********************************************************************** @@ -2699,10 +2678,7 @@ BOOL WINAPI ImmUnlockIMCC(HIMCC imcc) */ DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc) { - IMCCInternal *internal; - internal = imcc; - - return internal->dwLock; + return GlobalFlags(imcc) & GMEM_LOCKCOUNT; } /*********************************************************************** @@ -2710,15 +2686,7 @@ DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc) */ HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size) { - IMCCInternal *internal,*newone; - int real_size = size + sizeof(IMCCInternal); - - internal = imcc; - - newone = HeapReAlloc(GetProcessHeap(), 0, internal, real_size); - newone->dwSize = size; - - return newone; + return GlobalReAlloc(imcc, size, GMEM_ZEROINIT | GMEM_MOVEABLE); } /*********************************************************************** @@ -2726,10 +2694,7 @@ HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size) */ DWORD WINAPI ImmGetIMCCSize(HIMCC imcc) { - IMCCInternal *internal; - internal = imcc; - - return internal->dwSize; + return GlobalSize(imcc); } /*********************************************************************** diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index bbf91107c59..cd6eee66a21 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -84,7 +84,7 @@ reactos/dll/win32/icmp # Out of sync reactos/dll/win32/ieframe # Synced to Wine-1.7.1 reactos/dll/win32/imaadp32.acm # Synced to Wine-1.7.1 reactos/dll/win32/imagehlp # Synced to Wine-1.7.1 -reactos/dll/win32/imm32 # Synced to Wine-1.5.19 +reactos/dll/win32/imm32 # Synced to Wine-1.7.1 reactos/dll/win32/inetcomm # Synced to Wine-1.7.1 reactos/dll/win32/inetmib1 # Synced to Wine-1.7.1 reactos/dll/win32/initpki # Synced to Wine-1.7.1