[IMM32] Rewrite IMCC handling functions (#3788)

Rewrite ImmCreateIMCC, ImmDestroyIMCC, ImmReSizeIMCC, ImmGetIMCCLockCount, ImmUnlockIMCC, ImmLockIMCC, and ImmGetIMCCSize functions. CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2021-07-07 10:04:30 +09:00 committed by GitHub
parent 7962db4cc1
commit 6eeea92530
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3013,7 +3013,13 @@ DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC)
*/ */
HIMCC WINAPI ImmCreateIMCC(DWORD size) HIMCC WINAPI ImmCreateIMCC(DWORD size)
{ {
#ifdef __REACTOS__
if (size < 4)
size = 4;
return LocalAlloc(LHND, size);
#else
return GlobalAlloc(GMEM_ZEROINIT | GMEM_MOVEABLE, size); return GlobalAlloc(GMEM_ZEROINIT | GMEM_MOVEABLE, size);
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3021,7 +3027,13 @@ HIMCC WINAPI ImmCreateIMCC(DWORD size)
*/ */
HIMCC WINAPI ImmDestroyIMCC(HIMCC block) HIMCC WINAPI ImmDestroyIMCC(HIMCC block)
{ {
#ifdef __REACTOS__
if (block)
return LocalFree(block);
return NULL;
#else
return GlobalFree(block); return GlobalFree(block);
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3029,7 +3041,13 @@ HIMCC WINAPI ImmDestroyIMCC(HIMCC block)
*/ */
LPVOID WINAPI ImmLockIMCC(HIMCC imcc) LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
{ {
#ifdef __REACTOS__
if (imcc)
return LocalLock(imcc);
return NULL;
#else
return GlobalLock(imcc); return GlobalLock(imcc);
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3037,7 +3055,13 @@ LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
*/ */
BOOL WINAPI ImmUnlockIMCC(HIMCC imcc) BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
{ {
#ifdef __REACTOS__
if (imcc)
return LocalUnlock(imcc);
return FALSE;
#else
return GlobalUnlock(imcc); return GlobalUnlock(imcc);
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3045,7 +3069,11 @@ BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
*/ */
DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc) DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc)
{ {
#ifdef __REACTOS__
return LocalFlags(imcc) & LMEM_LOCKCOUNT;
#else
return GlobalFlags(imcc) & GMEM_LOCKCOUNT; return GlobalFlags(imcc) & GMEM_LOCKCOUNT;
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3053,7 +3081,13 @@ DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc)
*/ */
HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size) HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size)
{ {
#ifdef __REACTOS__
if (!imcc)
return NULL;
return LocalReAlloc(imcc, size, LHND);
#else
return GlobalReAlloc(imcc, size, GMEM_ZEROINIT | GMEM_MOVEABLE); return GlobalReAlloc(imcc, size, GMEM_ZEROINIT | GMEM_MOVEABLE);
#endif
} }
/*********************************************************************** /***********************************************************************
@ -3061,7 +3095,13 @@ HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size)
*/ */
DWORD WINAPI ImmGetIMCCSize(HIMCC imcc) DWORD WINAPI ImmGetIMCCSize(HIMCC imcc)
{ {
#ifdef __REACTOS__
if (imcc)
return LocalSize(imcc);
return 0;
#else
return GlobalSize(imcc); return GlobalSize(imcc);
#endif
} }
/*********************************************************************** /***********************************************************************