Alexandre Julliard : winex11: Use an init once function to register IME classes.

Alexandre Julliard julliard at winehq.org
Tue Oct 22 13:30:40 CDT 2013


Module: wine
Branch: master
Commit: 7cc272cdefaa19ff2b6f0d2e961abdd840bce204
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7cc272cdefaa19ff2b6f0d2e961abdd840bce204

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Oct 21 22:05:34 2013 +0200

winex11: Use an init once function to register IME classes.

---

 dlls/winex11.drv/ime.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c
index aa6c7dd..cd40f77 100644
--- a/dlls/winex11.drv/ime.c
+++ b/dlls/winex11.drv/ime.c
@@ -122,14 +122,10 @@ static BOOL UnlockRealIMC(HIMC hIMC)
         return FALSE;
 }
 
-static void IME_RegisterClasses(void)
+static BOOL WINAPI register_classes( INIT_ONCE *once, void *param, void **context )
 {
-    static BOOL done = FALSE;
     WNDCLASSW wndClass;
 
-    if (done) return;
-    done = TRUE;
-
     ZeroMemory(&wndClass, sizeof(WNDCLASSW));
     wndClass.style = CS_GLOBALCLASS | CS_IME | CS_HREDRAW | CS_VREDRAW;
     wndClass.lpfnWndProc = IME_WindowProc;
@@ -151,6 +147,7 @@ static void IME_RegisterClasses(void)
     WM_MSIME_RECONVERT = RegisterWindowMessageA("MSIMEReconvert");
     WM_MSIME_QUERYPOSITION = RegisterWindowMessageA("MSIMEQueryPosition");
     WM_MSIME_DOCUMENTFEED = RegisterWindowMessageA("MSIMEDocumentFeed");
+    return TRUE;
 }
 
 static HIMCC ImeCreateBlankCompStr(void)
@@ -561,8 +558,10 @@ static void IME_AddToSelected(HIMC hIMC)
 BOOL WINAPI ImeInquire(LPIMEINFO lpIMEInfo, LPWSTR lpszUIClass,
                        LPCWSTR lpszOption)
 {
+    static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT;
+
     TRACE("\n");
-    IME_RegisterClasses();
+    InitOnceExecuteOnce( &init_once, register_classes, NULL, NULL );
     lpIMEInfo->dwPrivateDataSize = sizeof (IMEPRIVATE);
     lpIMEInfo->fdwProperty = IME_PROP_UNICODE | IME_PROP_AT_CARET;
     lpIMEInfo->fdwConversionCaps = IME_CMODE_NATIVE;




More information about the wine-cvs mailing list