Commit 51fbfa41 authored by Rémi Bernon's avatar Rémi Bernon Committed by Vitaly Lipatov

winex11.drv: Split XInput2 thread initialization.

And rename the library and function loader to x11drv_xinput_load.
parent b291d92a
......@@ -279,6 +279,32 @@ static void update_relative_valuators(XIAnyClassInfo **valuators, int n_valuator
/***********************************************************************
* x11drv_xinput_init
*/
void x11drv_xinput_init(void)
{
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
struct x11drv_thread_data *data = x11drv_thread_data();
int major = 2, minor = 0;
if (data->xi2_state != xi_unknown) return;
if (xinput2_available &&
!pXIQueryVersion( data->display, &major, &minor ))
{
TRACE( "XInput2 %d.%d available\n", major, minor );
data->xi2_state = xi_disabled;
}
else
{
data->xi2_state = xi_unavailable;
WARN( "XInput 2.0 not available\n" );
}
#endif
}
/***********************************************************************
* enable_xinput2
*/
static void enable_xinput2(void)
......@@ -289,19 +315,9 @@ static void enable_xinput2(void)
unsigned char mask_bits[XIMaskLen(XI_LASTEVENT)];
int count;
if (!xinput2_available) return;
TRACE( "state:%d\n", data->xi2_state );
if (data->xi2_state != xi_disabled) return;
if (data->xi2_state == xi_unknown)
{
int major = 2, minor = 0;
if (!pXIQueryVersion( data->display, &major, &minor )) data->xi2_state = xi_disabled;
else
{
data->xi2_state = xi_unavailable;
WARN( "X Input 2 not available\n" );
}
}
if (data->xi2_state == xi_unavailable) return;
if (!pXIGetClientPointer( data->display, None, &data->xi2_core_pointer )) return;
mask.mask = mask_bits;
......@@ -342,9 +358,9 @@ static void disable_xinput2(void)
struct x11drv_thread_data *data = x11drv_thread_data();
XIEventMask mask;
TRACE( "state:%d\n", data->xi2_state );
if (data->xi2_state != xi_enabled) return;
TRACE( "disabling\n" );
data->xi2_state = xi_disabled;
mask.mask = NULL;
......@@ -1952,9 +1968,9 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev )
/***********************************************************************
* X11DRV_XInput2_Init
* x11drv_xinput_load
*/
void X11DRV_XInput2_Init(void)
void x11drv_xinput_load(void)
{
#if defined(SONAME_LIBXI) && defined(HAVE_X11_EXTENSIONS_XINPUT2_H)
int event, error;
......
......@@ -258,7 +258,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN;
/* X11 driver internal functions */
extern void X11DRV_Xcursor_Init(void) DECLSPEC_HIDDEN;
extern void X11DRV_XInput2_Init(void) DECLSPEC_HIDDEN;
extern void x11drv_xinput_load(void) DECLSPEC_HIDDEN;
extern void x11drv_xinput_init(void) DECLSPEC_HIDDEN;
extern DWORD copy_image_bits( BITMAPINFO *info, BOOL is_r8g8b8, XImage *image,
const struct gdi_image_bits *src_bits, struct gdi_image_bits *dst_bits,
......
......@@ -705,7 +705,7 @@ static NTSTATUS x11drv_init( void *arg )
#ifdef SONAME_LIBXCOMPOSITE
X11DRV_XComposite_Init();
#endif
X11DRV_XInput2_Init();
x11drv_xinput_load();
#ifdef HAVE_XKB
if (use_xkb) use_xkb = XkbUseExtension( gdi_display, NULL, NULL );
......@@ -800,6 +800,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void)
if (use_xim) X11DRV_SetupXIM();
x11drv_xinput_init();
return data;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment