[NTUSER] Do assignment lock at NtUserSetThreadLayoutHandles (#4459)

- Use UserAssignmentLock in NtUserSetThreadLayoutHandles.
- Add Win: comments to many functions.
- Rename glcid as glcidSystem.
CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2022-04-19 08:41:13 +09:00 committed by GitHub
parent c35488ec70
commit 5df5ef2bdf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View file

@ -1247,6 +1247,7 @@ co_UserCBClientPrinterThunk( PVOID pkt, INT InSize, PVOID pvOutData, INT OutSize
return 0; return 0;
} }
// Win: ClientImmProcessKey
DWORD DWORD
APIENTRY APIENTRY
co_IntImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID) co_IntImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)

View file

@ -55,9 +55,10 @@ typedef struct tagIMEHOTKEY
HKL hKL; HKL hKL;
} IMEHOTKEY, *PIMEHOTKEY; } IMEHOTKEY, *PIMEHOTKEY;
PIMEHOTKEY gpImeHotKeyList = NULL; PIMEHOTKEY gpImeHotKeyList = NULL; // Win: gpImeHotKeyListHeader
LCID glcid = 0; LCID glcidSystem = 0; // Win: glcidSystem
// Win: GetAppImeCompatFlags
DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti) DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
{ {
if (!pti) if (!pti)
@ -66,6 +67,7 @@ DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
return pti->ppi->dwImeCompatFlags; return pti->ppi->dwImeCompatFlags;
} }
// Win: GetLangIdMatchLevel
UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId) UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
{ {
LCID lcid; LCID lcid;
@ -86,15 +88,16 @@ UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
if (HotKeyLangId == LANGIDFROMLCID(lcid)) if (HotKeyLangId == LANGIDFROMLCID(lcid))
return 2; return 2;
if (glcid == 0) if (glcidSystem == 0)
ZwQueryDefaultLocale(FALSE, &glcid); ZwQueryDefaultLocale(FALSE, &glcidSystem);
if (HotKeyLangId == LANGIDFROMLCID(glcid)) if (HotKeyLangId == LANGIDFROMLCID(glcidSystem))
return 1; return 1;
return 0; return 0;
} }
// Win: GetActiveHKL
HKL FASTCALL IntGetActiveKeyboardLayout(VOID) HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
{ {
PTHREADINFO pti; PTHREADINFO pti;
@ -109,6 +112,7 @@ HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
return UserGetKeyboardLayout(0); return UserGetKeyboardLayout(0);
} }
// Win: GetHotKeyLangID
static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId) static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId)
{ {
#define IME_CHOTKEY 0x10 #define IME_CHOTKEY 0x10
@ -155,6 +159,7 @@ static VOID FASTCALL IntAddImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
} }
} }
// Win: FindImeHotKeyByID
static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyId) static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyId)
{ {
PIMEHOTKEY pNode; PIMEHOTKEY pNode;
@ -166,6 +171,7 @@ static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyI
return NULL; return NULL;
} }
// Win: FindImeHotKeyByKeyWithLang
static PIMEHOTKEY APIENTRY static PIMEHOTKEY APIENTRY
IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight,
UINT uVirtualKey, LANGID TargetLangId) UINT uVirtualKey, LANGID TargetLangId)
@ -197,6 +203,7 @@ IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight,
return NULL; return NULL;
} }
// Win: DeleteImeHotKey
static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey) static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
{ {
PIMEHOTKEY pNode; PIMEHOTKEY pNode;
@ -219,6 +226,7 @@ static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
} }
} }
// Win: FindImeHotKeyByKey
PIMEHOTKEY PIMEHOTKEY
IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVirtualKey) IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVirtualKey)
{ {
@ -486,6 +494,7 @@ Quit:
return ret; return ret;
} }
// Win: GetTopLevelWindow
PWND FASTCALL IntGetTopLevelWindow(PWND pwnd) PWND FASTCALL IntGetTopLevelWindow(PWND pwnd)
{ {
if (!pwnd) if (!pwnd)
@ -526,7 +535,7 @@ NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
if (IS_IME_HKL(hNewKL) != IS_IME_HKL(hOldKL)) if (IS_IME_HKL(hNewKL) != IS_IME_HKL(hOldKL))
pti->hklPrev = hOldKL; pti->hklPrev = hOldKL;
pti->KeyboardLayout = pNewKL; UserAssignmentLock((PVOID*)&pti->KeyboardLayout, pNewKL);
Quit: Quit:
UserLeave(); UserLeave();
@ -566,6 +575,7 @@ DWORD FASTCALL UserBuildHimcList(PTHREADINFO pti, DWORD dwCount, HIMC *phList)
return dwRealCount; return dwRealCount;
} }
// Win: xxxImmProcessKey
UINT FASTCALL UINT FASTCALL
IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg, IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg,
WPARAM wParam, LPARAM lParam) WPARAM wParam, LPARAM lParam)
@ -739,6 +749,7 @@ Quit:
return ret; return ret;
} }
// Win: SetConvMode
static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion) static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion)
{ {
HKL hKL; HKL hKL;
@ -1494,6 +1505,7 @@ Quit:
return ret; return ret;
} }
// Win: UpdateInputContext
BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR dwValue) BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR dwValue)
{ {
PTHREADINFO pti = GetW32ThreadInfo(); PTHREADINFO pti = GetW32ThreadInfo();