wine-staging/patches/user32-rawinput-mouse/0001-winex11.drv-Split-XInput2-thread-initialization.patch

134 lines
4.3 KiB
Diff
Raw Normal View History

2021-10-28 01:37:27 -07:00
From b4d1ea44dd7f2201ba7d02eb171ee2ddb4013fe5 Mon Sep 17 00:00:00 2001
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.
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
--- 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
#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)
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)
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 )
/***********************************************************************
- * 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
--- 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;
/* 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
--- 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)
#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)
if (use_xim) X11DRV_SetupXIM();
+ x11drv_xinput_init();
+
return data;
}
--
2021-10-28 01:37:27 -07:00
2.33.0