https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5df5ef2bdf5529096044211c41876b2aed1770c6

commit 5df5ef2bdf5529096044211c41876b2aed1770c6
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Tue Apr 19 08:41:13 2022 +0900
Commit:     GitHub <[email protected]>
CommitDate: Tue Apr 19 08:41:13 2022 +0900

    [NTUSER] Do assignment lock at NtUserSetThreadLayoutHandles (#4459)
    
    - Use UserAssignmentLock in NtUserSetThreadLayoutHandles.
    - Add Win: comments to many functions.
    - Rename glcid as glcidSystem.
    CORE-11700
---
 win32ss/user/ntuser/callback.c |  1 +
 win32ss/user/ntuser/ime.c      | 24 ++++++++++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/win32ss/user/ntuser/callback.c b/win32ss/user/ntuser/callback.c
index 9b5ac56965a..4e1c053e4bf 100644
--- a/win32ss/user/ntuser/callback.c
+++ b/win32ss/user/ntuser/callback.c
@@ -1247,6 +1247,7 @@ co_UserCBClientPrinterThunk( PVOID pkt, INT InSize, PVOID 
pvOutData, INT OutSize
    return 0;
 }
 
+// Win: ClientImmProcessKey
 DWORD
 APIENTRY
 co_IntImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD 
dwHotKeyID)
diff --git a/win32ss/user/ntuser/ime.c b/win32ss/user/ntuser/ime.c
index 6b6e17391ef..eccaca5fd93 100644
--- a/win32ss/user/ntuser/ime.c
+++ b/win32ss/user/ntuser/ime.c
@@ -55,9 +55,10 @@ typedef struct tagIMEHOTKEY
     HKL    hKL;
 } IMEHOTKEY, *PIMEHOTKEY;
 
-PIMEHOTKEY gpImeHotKeyList = NULL;
-LCID glcid = 0;
+PIMEHOTKEY gpImeHotKeyList = NULL; // Win: gpImeHotKeyListHeader
+LCID glcidSystem = 0; // Win: glcidSystem
 
+// Win: GetAppImeCompatFlags
 DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
 {
     if (!pti)
@@ -66,6 +67,7 @@ DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
     return pti->ppi->dwImeCompatFlags;
 }
 
+// Win: GetLangIdMatchLevel
 UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
 {
     LCID lcid;
@@ -86,15 +88,16 @@ UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID 
HotKeyLangId)
     if (HotKeyLangId == LANGIDFROMLCID(lcid))
         return 2;
 
-    if (glcid == 0)
-        ZwQueryDefaultLocale(FALSE, &glcid);
+    if (glcidSystem == 0)
+        ZwQueryDefaultLocale(FALSE, &glcidSystem);
 
-    if (HotKeyLangId == LANGIDFROMLCID(glcid))
+    if (HotKeyLangId == LANGIDFROMLCID(glcidSystem))
         return 1;
 
     return 0;
 }
 
+// Win: GetActiveHKL
 HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
 {
     PTHREADINFO pti;
@@ -109,6 +112,7 @@ HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
     return UserGetKeyboardLayout(0);
 }
 
+// Win: GetHotKeyLangID
 static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId)
 {
 #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)
 {
     PIMEHOTKEY pNode;
@@ -166,6 +171,7 @@ static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY 
pList, DWORD dwHotKeyI
     return NULL;
 }
 
+// Win: FindImeHotKeyByKeyWithLang
 static PIMEHOTKEY APIENTRY
 IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight,
                             UINT uVirtualKey, LANGID TargetLangId)
@@ -197,6 +203,7 @@ IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT 
uModKeys, UINT uLeftRight,
     return NULL;
 }
 
+// Win: DeleteImeHotKey
 static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
 {
     PIMEHOTKEY pNode;
@@ -219,6 +226,7 @@ static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, 
PIMEHOTKEY pHotKey)
     }
 }
 
+// Win: FindImeHotKeyByKey
 PIMEHOTKEY
 IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT 
uVirtualKey)
 {
@@ -486,6 +494,7 @@ Quit:
     return ret;
 }
 
+// Win: GetTopLevelWindow
 PWND FASTCALL IntGetTopLevelWindow(PWND pwnd)
 {
     if (!pwnd)
@@ -526,7 +535,7 @@ NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
     if (IS_IME_HKL(hNewKL) != IS_IME_HKL(hOldKL))
         pti->hklPrev = hOldKL;
 
-    pti->KeyboardLayout = pNewKL;
+    UserAssignmentLock((PVOID*)&pti->KeyboardLayout, pNewKL);
 
 Quit:
     UserLeave();
@@ -566,6 +575,7 @@ DWORD FASTCALL UserBuildHimcList(PTHREADINFO pti, DWORD 
dwCount, HIMC *phList)
     return dwRealCount;
 }
 
+// Win: xxxImmProcessKey
 UINT FASTCALL
 IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg,
                  WPARAM wParam, LPARAM lParam)
@@ -739,6 +749,7 @@ Quit:
     return ret;
 }
 
+// Win: SetConvMode
 static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD 
dwConversion)
 {
     HKL hKL;
@@ -1494,6 +1505,7 @@ Quit:
     return ret;
 }
 
+// Win: UpdateInputContext
 BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR 
dwValue)
 {
     PTHREADINFO pti = GetW32ThreadInfo();

Reply via email to