https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5197d36839a1f8bd21885ac9dbdb7c28404a5846

commit 5197d36839a1f8bd21885ac9dbdb7c28404a5846
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Tue Dec 19 16:12:12 2023 +0900
Commit:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
CommitDate: Tue Dec 19 16:12:12 2023 +0900

    [MSCTFIME] Refactor on IMC/IMCC locking
    
    - Rename _IMCCLock as IMCCLOCK.
    - Rename InternalIMCCLock as IMCCLock.
    - Rename _IMCLock as IMCLOCK.
    - Add get() pointer accessor of IMCCLock and IMCLOCK.
    - Protect the pointer of IMCCLOCK and IMCLOCK.
    CORE-19360
---
 dll/ime/msctfime/msctfime.cpp        | 10 ++++-----
 sdk/include/reactos/cicero/imclock.h | 42 +++++++++++++++++++++++-------------
 2 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/dll/ime/msctfime/msctfime.cpp b/dll/ime/msctfime/msctfime.cpp
index f6830f9dc62..8550caa2209 100644
--- a/dll/ime/msctfime/msctfime.cpp
+++ b/dll/ime/msctfime/msctfime.cpp
@@ -101,7 +101,7 @@ CicInputContext::GetGuidAtom(
     _In_ DWORD dwUnknown,
     _Out_opt_ LPDWORD pdwGuidAtom)
 {
-    InternalIMCCLock<CTFIMECONTEXT> imeContext(imcLock.m_pIC->hCompStr);
+    IMCCLock<CTFIMECONTEXT> imeContext(imcLock.get().hCompStr);
 
     HRESULT hr = imeContext.m_hr;
     if (!imeContext)
@@ -809,17 +809,17 @@ CtfImeGetGuidAtom(
     if (FAILED(hr))
         return hr;
 
-    InternalIMCCLock<CTFIMECONTEXT> imccLock(imcLock.m_pIC->hCtfImeContext);
+    IMCCLock<CTFIMECONTEXT> imccLock(imcLock.get().hCtfImeContext);
     hr = imccLock.m_hr;
     if (!imccLock)
         hr = E_FAIL;
     if (FAILED(hr))
         return hr;
 
-    if (!imccLock.m_pIMCC->m_pCicIC)
+    if (!imccLock.get().m_pCicIC)
         return E_OUTOFMEMORY;
 
-    hr = imccLock.m_pIMCC->m_pCicIC->GetGuidAtom(imcLock, dwUnknown, 
pdwGuidAtom);
+    hr = imccLock.get().m_pCicIC->GetGuidAtom(imcLock, dwUnknown, pdwGuidAtom);
     return hr;
 }
 
@@ -842,7 +842,7 @@ CtfImeIsGuidMapEnable(
     if (!imcLock)
         hr = E_FAIL;
     if (SUCCEEDED(hr))
-        ret = !!(imcLock.m_pIC->fdwInit & INIT_GUIDMAP);
+        ret = !!(imcLock.get().fdwInit & INIT_GUIDMAP);
 
     return ret;
 }
diff --git a/sdk/include/reactos/cicero/imclock.h 
b/sdk/include/reactos/cicero/imclock.h
index 0a2ff2368a8..3392c9a1107 100644
--- a/sdk/include/reactos/cicero/imclock.h
+++ b/sdk/include/reactos/cicero/imclock.h
@@ -7,20 +7,22 @@
 
 #pragma once
 
-// class _IMCCLock<T_DATA>;
-// class InternalIMCCLock<T_DATA>;
+// class IMCCLOCK<T_DATA>;
+// class IMCCLock<T_DATA>;
 // class _IMCLock;
 // class IMCLock;
 
 template <typename T_DATA>
-class _IMCCLock
+class IMCCLOCK
 {
-public:
+protected:
     T_DATA *m_pIMCC;
+
+public:
     HIMCC m_hIMCC;
     HRESULT m_hr;
 
-    _IMCCLock(HIMCC hIMCC)
+    IMCCLOCK(HIMCC hIMCC)
     {
         m_pIMCC = NULL;
         m_hr = S_OK;
@@ -29,15 +31,15 @@ public:
 };
 
 template <typename T_DATA>
-class InternalIMCCLock : public _IMCCLock<T_DATA>
+class IMCCLock : public IMCCLOCK<T_DATA>
 {
 public:
-    InternalIMCCLock(HIMCC hIMCC) : _IMCCLock<T_DATA>(hIMCC)
+    IMCCLock(HIMCC hIMCC) : IMCCLOCK<T_DATA>(hIMCC)
     {
         if (hIMCC)
             _LockIMCC(this->m_hIMCC, &this->m_pIMCC);
     }
-    ~InternalIMCCLock()
+    ~IMCCLock()
     {
         if (this->m_pIMCC)
             _UnlockIMCC(this->m_hIMCC);
@@ -46,6 +48,10 @@ public:
     {
         return this->m_pIMCC;
     }
+    T_DATA& get() const
+    {
+        return *this->m_pIMCC;
+    }
 
 protected:
     HRESULT _LockIMCC(HIMCC hIMCC, T_DATA **pptr)
@@ -63,15 +69,17 @@ protected:
     }
 };
 
-class _IMCLock
+class IMCLOCK
 {
-public:
+protected:
     LPINPUTCONTEXTDX m_pIC;
+
+public:
     HIMC m_hIMC;
     HRESULT m_hr;
     DWORD m_dw3;
 
-    _IMCLock(HIMC hIMC)
+    IMCLOCK(HIMC hIMC)
     {
         m_pIC = NULL;
         m_hIMC = hIMC;
@@ -85,10 +93,10 @@ public:
     }
 };
 
-class IMCLock : public _IMCLock
+class IMCLock : public IMCLOCK
 {
 public:
-    IMCLock(HIMC hIMC) : _IMCLock(hIMC)
+    IMCLock(HIMC hIMC) : IMCLOCK(hIMC)
     {
         m_hr = _LockIMC(hIMC, &m_pIC);
     }
@@ -111,11 +119,11 @@ public:
         if (ImmGetIMCCSize(m_pIC->hCompStr) < sizeof(COMPOSITIONSTRING))
             return FALSE;
 
-        InternalIMCCLock<COMPOSITIONSTRING> imccLock(m_pIC->hCompStr);
+        IMCCLock<COMPOSITIONSTRING> imccLock(m_pIC->hCompStr);
         if (!imccLock)
             return FALSE;
 
-        return imccLock.m_pIMCC->dwCompStrLen > 0;
+        return imccLock.get().dwCompStrLen > 0;
     }
 
     BOOL UseVerticalCompWindow() const
@@ -127,6 +135,10 @@ public:
     {
         return m_pIC;
     }
+    INPUTCONTEXTDX& get() const
+    {
+        return *m_pIC;
+    }
 
 protected:
     HRESULT _LockIMC(HIMC hIMC, LPINPUTCONTEXTDX *ppIC)

Reply via email to