2021-10-28 01:37:27 -07:00
|
|
|
From b4d1ea44dd7f2201ba7d02eb171ee2ddb4013fe5 Mon Sep 17 00:00:00 2001
|
2021-04-09 15:39:38 -07:00
|
|
|
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
|
|
|
Date: Fri, 17 Jan 2020 16:33:11 +0100
|
2021-10-28 01:37:27 -07:00
|
|
|
Subject: [PATCH 1/8] winex11.drv: Split XInput2 thread initialization.
|
2021-04-09 15:39:38 -07:00
|
|
|
|
|
|
|
And rename the library and function loader to x11drv_xinput_load.
|
|
|
|
---
|
|
|
|
dlls/winex11.drv/mouse.c | 46 +++++++++++++++++++++++-----------
|
|
|
|
dlls/winex11.drv/x11drv.h | 3 ++-
|
|
|
|
dlls/winex11.drv/x11drv_main.c | 4 ++-
|
|
|
|
3 files changed, 36 insertions(+), 17 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
|
2021-10-28 01:37:27 -07:00
|
|
|
index 8cc30f0736d..a299944613e 100644
|
2021-04-09 15:39:38 -07:00
|
|
|
--- a/dlls/winex11.drv/mouse.c
|
|
|
|
+++ b/dlls/winex11.drv/mouse.c
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -279,6 +279,32 @@ static void update_relative_valuators(XIAnyClassInfo **valuators, int n_valuator
|
2021-04-09 15:39:38 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * 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
|
|
|
|
*/
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -291,19 +317,9 @@ static void enable_xinput2(void)
|
2021-04-09 15:39:38 -07:00
|
|
|
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;
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -343,9 +359,9 @@ static void disable_xinput2(void)
|
2021-04-09 15:39:38 -07:00
|
|
|
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;
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -1919,9 +1935,9 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev )
|
2021-04-09 15:39:38 -07:00
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
- * 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;
|
|
|
|
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
2021-10-28 01:37:27 -07:00
|
|
|
index d384a8a68c0..2f14c3f7cea 100644
|
2021-04-09 15:39:38 -07:00
|
|
|
--- a/dlls/winex11.drv/x11drv.h
|
|
|
|
+++ b/dlls/winex11.drv/x11drv.h
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -196,7 +196,8 @@ extern BOOL CDECL X11DRV_UnrealizePalette( HPALETTE hpal ) DECLSPEC_HIDDEN;
|
2021-04-09 15:39:38 -07:00
|
|
|
/* 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,
|
|
|
|
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
2021-10-28 01:37:27 -07:00
|
|
|
index bd21afc8174..98f57383bc2 100644
|
2021-04-09 15:39:38 -07:00
|
|
|
--- a/dlls/winex11.drv/x11drv_main.c
|
|
|
|
+++ b/dlls/winex11.drv/x11drv_main.c
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -623,7 +623,7 @@ static BOOL process_attach(void)
|
2021-04-09 15:39:38 -07:00
|
|
|
#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 );
|
2021-10-28 01:37:27 -07:00
|
|
|
@@ -716,6 +716,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void)
|
2021-04-09 15:39:38 -07:00
|
|
|
|
|
|
|
if (use_xim) X11DRV_SetupXIM();
|
|
|
|
|
|
|
|
+ x11drv_xinput_init();
|
|
|
|
+
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
2021-10-28 01:37:27 -07:00
|
|
|
2.33.0
|
2021-04-09 15:39:38 -07:00
|
|
|
|