Alexandre Julliard : winex11: The XIM callback is called with the X11 lock held.
Alexandre Julliard
julliard at winehq.org
Mon May 5 14:28:22 CDT 2008
Module: wine
Branch: master
Commit: dffab36e8b4a0f9efaef9701da4f75b1b976e02c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dffab36e8b4a0f9efaef9701da4f75b1b976e02c
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon May 5 15:08:33 2008 +0200
winex11: The XIM callback is called with the X11 lock held.
---
dlls/winex11.drv/xim.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index a4fbdb2..8512583 100644
--- a/dlls/winex11.drv/xim.c
+++ b/dlls/winex11.drv/xim.c
@@ -374,8 +374,10 @@ static void X11DRV_DestroyIM(XIM xim, XPointer p, XPointer data)
}
/***********************************************************************
-* X11DRV Ime creation
-*/
+ * X11DRV Ime creation
+ *
+ * Should always be called with the x11 lock held
+ */
static void X11DRV_OpenIM(Display *display, XPointer ptr, XPointer data)
{
struct x11drv_thread_data *thread_data = x11drv_thread_data();
@@ -385,13 +387,10 @@ static void X11DRV_OpenIM(Display *display, XPointer ptr, XPointer data)
XIM xim;
XIMCallback destroy;
- wine_tsx11_lock();
-
xim = XOpenIM(display, NULL, NULL, NULL);
if (xim == NULL)
{
WARN("Could not open input method.\n");
- wine_tsx11_unlock();
return;
}
@@ -411,7 +410,6 @@ static void X11DRV_OpenIM(Display *display, XPointer ptr, XPointer data)
{
WARN("Could not find supported input style.\n");
XCloseIM(xim);
- wine_tsx11_unlock();
return;
}
else
@@ -474,8 +472,10 @@ static void X11DRV_OpenIM(Display *display, XPointer ptr, XPointer data)
thread_data->xim = xim;
XUnregisterIMInstantiateCallback(display, NULL, NULL, NULL, X11DRV_OpenIM, NULL);
+
wine_tsx11_unlock();
IME_UpdateAssociation(NULL);
+ wine_tsx11_lock();
}
More information about the wine-cvs
mailing list