mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 16:51:39 +00:00
parent
e5f637f93f
commit
f848343bff
2 changed files with 21 additions and 21 deletions
|
@ -907,38 +907,37 @@ PCLIENTIMC WINAPI ImmLockClientImc(HIMC hImc)
|
|||
|
||||
TRACE("(%p)\n", hImc);
|
||||
|
||||
if (hImc == NULL)
|
||||
if (!hImc)
|
||||
return NULL;
|
||||
|
||||
pIMC = ValidateHandleNoErr(hImc, TYPE_INPUTCONTEXT);
|
||||
if (pIMC == NULL || !Imm32CheckImcProcess(pIMC))
|
||||
if (!pIMC || !Imm32CheckImcProcess(pIMC))
|
||||
return NULL;
|
||||
|
||||
pClientImc = (PCLIENTIMC)pIMC->dwClientImcData;
|
||||
if (!pClientImc)
|
||||
{
|
||||
pClientImc = ImmLocalAlloc(HEAP_ZERO_MEMORY, sizeof(CLIENTIMC));
|
||||
if (!pClientImc)
|
||||
return NULL;
|
||||
|
||||
RtlInitializeCriticalSection(&pClientImc->cs);
|
||||
|
||||
pClientImc->dwCompatFlags = (DWORD)NtUserGetThreadState(THREADSTATE_IMECOMPATFLAGS);
|
||||
|
||||
if (!NtUserUpdateInputContext(hImc, UIC_CLIENTIMCDATA, (DWORD_PTR)pClientImc))
|
||||
{
|
||||
ImmLocalFree(pClientImc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pClientImc->dwFlags |= CLIENTIMC_UNKNOWN2;
|
||||
}
|
||||
else
|
||||
if (pClientImc)
|
||||
{
|
||||
if (pClientImc->dwFlags & CLIENTIMC_DESTROY)
|
||||
return NULL;
|
||||
goto Finish;
|
||||
}
|
||||
|
||||
pClientImc = ImmLocalAlloc(HEAP_ZERO_MEMORY, sizeof(CLIENTIMC));
|
||||
if (!pClientImc)
|
||||
return NULL;
|
||||
|
||||
RtlInitializeCriticalSection(&pClientImc->cs);
|
||||
pClientImc->dwCompatFlags = (DWORD)NtUserGetThreadState(THREADSTATE_IMECOMPATFLAGS);
|
||||
|
||||
if (!NtUserUpdateInputContext(hImc, UIC_CLIENTIMCDATA, (DWORD_PTR)pClientImc))
|
||||
{
|
||||
ImmLocalFree(pClientImc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pClientImc->dwFlags |= CLIENTIMC_UNKNOWN2;
|
||||
|
||||
Finish:
|
||||
InterlockedIncrement(&pClientImc->cLockObj);
|
||||
return pClientImc;
|
||||
}
|
||||
|
|
|
@ -213,6 +213,7 @@ PWND FASTCALL ValidateHwndNoErr(HWND hwnd)
|
|||
return ValidateHandleNoErr(hwnd, TYPE_WINDOW);
|
||||
}
|
||||
|
||||
// Win: TestInputContextProcess
|
||||
BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
|
||||
{
|
||||
HIMC hIMC;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue