Module: wine Branch: master Commit: dffab36e8b4a0f9efaef9701da4f75b1b976e02c URL: http://source.winehq.org/git/wine.git/?a=commit;h=dffab36e8b4a0f9efaef9701da... Author: Alexandre Julliard <julliard(a)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(); }