winex11.drv: Connect to XIM server dynamically. [take 2]
Alexandre Julliard
julliard at winehq.org
Wed Apr 2 06:37:54 CDT 2008
Kusanagi Kouichi <slash at ma.neweb.ne.jp> writes:
> +
> + if (data->xic)
> + return data->xic;
> +
> + xim = x11drv_thread_data()->xim;
> + if (!xim)
> + return NULL;
> +
> + return X11DRV_CreateIC(xim, data->whole_window, &data->xic);
You shouldn't store a pointer to an internal field of the win_data
structure, that makes things hard to follow. You should store win_data
or hwnd in the pointer field and dereference it in the callback.
> @@ -651,7 +651,10 @@ struct x11drv_thread_data *x11drv_init_thread_data(void)
> if (TRACE_ON(synchronous)) XSynchronize( data->display, True );
> wine_tsx11_unlock();
>
> - if (use_xim && !(data->xim = X11DRV_SetupXIM( data->display, input_style )))
> + data->xim = NULL;
> + if (use_xim &&
> + !XRegisterIMInstantiateCallback(data->display, NULL, NULL, NULL,
> + X11DRV_SetupXIM, (XPointer)&data->xim))
The XRegisterIMInstantiateCallback should go in xim.c, the
initialization code in x11drv_main.c shouldn't need to know about such
implementation details.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list