mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against c7431990d815e664cf22267142b76cc59f21d192.
This commit is contained in:
parent
8273be2218
commit
117d2b2107
@ -1,120 +0,0 @@
|
||||
From 9229c4fe3078946d7f5fd976b4e2c9f0a5a8ccb1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Fri, 10 Jan 2020 15:34:45 -0600
|
||||
Subject: [PATCH] user32: Implement QueryDisplayConfig
|
||||
|
||||
---
|
||||
dlls/user32/sysparams.c | 95 +++++++++++++++++++++++++++++++++--------
|
||||
1 file changed, 77 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
|
||||
index 7ebe8099419..6d673c68e8c 100644
|
||||
--- a/dlls/user32/sysparams.c
|
||||
+++ b/dlls/user32/sysparams.c
|
||||
@@ -1184,26 +1184,85 @@ LONG WINAPI QueryDisplayConfig(UINT32 flags, UINT32 *numpathelements, DISPLAYCON
|
||||
LUID gpu_luid;
|
||||
WCHAR device_name[CCHDEVICENAME];
|
||||
DEVMODEW devmode;
|
||||
+ POINT origin;
|
||||
+ HMONITOR monitor;
|
||||
+ MONITORINFOEXW monitor_info;
|
||||
+ DISPLAYCONFIG_SOURCE_MODE *source_mode = &modeinfo[0].sourceMode;
|
||||
+ DISPLAYCONFIG_TARGET_MODE *target_mode = &modeinfo[1].targetMode;
|
||||
+ DISPLAYCONFIG_PATH_SOURCE_INFO *source_info = &pathinfo[0].sourceInfo;
|
||||
+ DISPLAYCONFIG_PATH_TARGET_INFO *target_info = &pathinfo[0].targetInfo;
|
||||
+
|
||||
+ TRACE("(%08x %p %p %p %p %p)\n", flags, numpathelements, pathinfo, numinfoelements, modeinfo, topologyid);
|
||||
+
|
||||
+ if (*numpathelements < 1 || *numinfoelements < 2)
|
||||
+ return ERROR_INSUFFICIENT_BUFFER;
|
||||
+
|
||||
+ origin.x = 0;
|
||||
+ origin.y = 0;
|
||||
+ monitor = MonitorFromPoint(origin, MONITOR_DEFAULTTOPRIMARY);
|
||||
+ monitor_info.cbSize = sizeof(monitor_info);
|
||||
+ if (!(GetMonitorInfoW(monitor, (MONITORINFO*) &monitor_info)))
|
||||
+ {
|
||||
+ return ERROR_GEN_FAILURE;
|
||||
+ }
|
||||
+ if (!(EnumDisplaySettingsW(monitor_info.szDevice, 0, &devmode)))
|
||||
+ {
|
||||
+ return ERROR_GEN_FAILURE;
|
||||
+ }
|
||||
|
||||
- FIXME("(%08x %p %p %p %p %p): semi-stub\n", flags, numpathelements, pathinfo, numinfoelements, modeinfo, topologyid);
|
||||
-
|
||||
- if (!numpathelements || !numinfoelements)
|
||||
- return ERROR_INVALID_PARAMETER;
|
||||
-
|
||||
- if (!*numpathelements || !*numinfoelements)
|
||||
- return ERROR_INVALID_PARAMETER;
|
||||
-
|
||||
- if (flags != QDC_ALL_PATHS &&
|
||||
- flags != QDC_ONLY_ACTIVE_PATHS &&
|
||||
- flags != QDC_DATABASE_CURRENT)
|
||||
- return ERROR_INVALID_PARAMETER;
|
||||
-
|
||||
- if (((flags == QDC_DATABASE_CURRENT) && !topologyid) ||
|
||||
- ((flags != QDC_DATABASE_CURRENT) && topologyid))
|
||||
- return ERROR_INVALID_PARAMETER;
|
||||
+ AllocateLocallyUniqueId(&gpu_luid);
|
||||
+
|
||||
+ source_mode->width = devmode.dmPelsWidth;
|
||||
+ source_mode->height = devmode.dmPelsHeight;
|
||||
+ source_mode->pixelFormat = DISPLAYCONFIG_PIXELFORMAT_32BPP;
|
||||
+ source_mode->position.x = 0;
|
||||
+ source_mode->position.y = 0;
|
||||
+
|
||||
+ /* no idea what pixel rate is */
|
||||
+ target_mode->targetVideoSignalInfo.pixelRate = 0xdeadbeef;
|
||||
+ target_mode->targetVideoSignalInfo.hSyncFreq.Numerator = devmode.dmDisplayFrequency * devmode.dmPelsHeight;
|
||||
+ target_mode->targetVideoSignalInfo.hSyncFreq.Denominator = 1;
|
||||
+ target_mode->targetVideoSignalInfo.vSyncFreq.Numerator = devmode.dmDisplayFrequency;
|
||||
+ target_mode->targetVideoSignalInfo.vSyncFreq.Denominator = 1;
|
||||
+ target_mode->targetVideoSignalInfo.activeSize.cx = devmode.dmPelsWidth;
|
||||
+ target_mode->targetVideoSignalInfo.activeSize.cy = devmode.dmPelsHeight;
|
||||
+ target_mode->targetVideoSignalInfo.totalSize.cx = devmode.dmPelsWidth;
|
||||
+ target_mode->targetVideoSignalInfo.totalSize.cy = devmode.dmPelsHeight;
|
||||
+ target_mode->targetVideoSignalInfo.videoStandard = D3DKMDT_VSS_NTSC_M;
|
||||
+ target_mode->targetVideoSignalInfo.scanLineOrdering = DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED;
|
||||
+
|
||||
+ modeinfo[0].infoType = DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE;
|
||||
+ modeinfo[0].id = 0;
|
||||
+ modeinfo[0].adapterId = gpu_luid;
|
||||
+ modeinfo[1].infoType = DISPLAYCONFIG_MODE_INFO_TYPE_TARGET;
|
||||
+ modeinfo[1].id = 0;
|
||||
+ modeinfo[1].adapterId = gpu_luid;
|
||||
+
|
||||
+ source_info->adapterId = gpu_luid;
|
||||
+ source_info->id = 0;
|
||||
+ source_info->modeInfoIdx = 0;
|
||||
+ source_info->statusFlags = DISPLAYCONFIG_SOURCE_IN_USE;
|
||||
+
|
||||
+ target_info->adapterId = gpu_luid;
|
||||
+ target_info->id = 0;
|
||||
+
|
||||
+ target_info->modeInfoIdx = 1;
|
||||
+ target_info->outputTechnology = DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI;
|
||||
+ target_info->rotation = DISPLAYCONFIG_ROTATION_IDENTITY;
|
||||
+ target_info->scaling = DISPLAYCONFIG_SCALING_IDENTITY;
|
||||
+ target_info->refreshRate.Numerator = devmode.dmDisplayFrequency;
|
||||
+ target_info->refreshRate.Denominator = 1;
|
||||
+ target_info->scanLineOrdering = DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED;
|
||||
+ target_info->targetAvailable = TRUE;
|
||||
+ target_info->statusFlags = DISPLAYCONFIG_TARGET_IN_USE;
|
||||
+
|
||||
+ pathinfo[0].flags = DISPLAYCONFIG_PATH_ACTIVE;
|
||||
+
|
||||
+ if (flags == QDC_DATABASE_CURRENT && topologyid)
|
||||
+ {
|
||||
+ *topologyid = DISPLAYCONFIG_TOPOLOGY_INTERNAL;
|
||||
+ }
|
||||
|
||||
- if (flags != QDC_ONLY_ACTIVE_PATHS)
|
||||
- FIXME("only returning active paths\n");
|
||||
|
||||
if (topologyid)
|
||||
{
|
||||
--
|
||||
2.35.1
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [49583] Implement QueryDisplayConfig
|
@ -1,4 +1,4 @@
|
||||
From 76aacbedda940eb85cbb98ea7207adcedcd039d8 Mon Sep 17 00:00:00 2001
|
||||
From 7d60bf3ed45a7ad0d08fa94f3f28c0ca499c8641 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Thu, 23 Jan 2020 11:00:19 +0100
|
||||
Subject: [PATCH] winex11.drv: Support XInput2 events for individual windows.
|
||||
@ -8,13 +8,13 @@ which can bring additional information.
|
||||
---
|
||||
dlls/winex11.drv/desktop.c | 2 ++
|
||||
dlls/winex11.drv/event.c | 7 +++++
|
||||
dlls/winex11.drv/mouse.c | 59 +++++++++++++++++++++++++++-----------
|
||||
dlls/winex11.drv/mouse.c | 58 +++++++++++++++++++++++++++-----------
|
||||
dlls/winex11.drv/window.c | 3 ++
|
||||
dlls/winex11.drv/x11drv.h | 12 +++++++-
|
||||
5 files changed, 66 insertions(+), 17 deletions(-)
|
||||
5 files changed, 65 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c
|
||||
index 168029367d3..7a8fb70059e 100644
|
||||
index 8a5682c1acb..6a5770c7671 100644
|
||||
--- a/dlls/winex11.drv/desktop.c
|
||||
+++ b/dlls/winex11.drv/desktop.c
|
||||
@@ -379,6 +379,8 @@ BOOL X11DRV_CreateDesktop( const WCHAR *name, UINT width, UINT height )
|
||||
@ -27,7 +27,7 @@ index 168029367d3..7a8fb70059e 100644
|
||||
|
||||
X11DRV_init_desktop( win, width, height );
|
||||
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
|
||||
index b33fd6e0390..af96c10bbab 100644
|
||||
index 2d46d516c69..d56634104e1 100644
|
||||
--- a/dlls/winex11.drv/event.c
|
||||
+++ b/dlls/winex11.drv/event.c
|
||||
@@ -235,6 +235,13 @@ static Bool filter_event( Display *display, XEvent *event, char *arg )
|
||||
@ -45,7 +45,7 @@ index b33fd6e0390..af96c10bbab 100644
|
||||
case MotionNotify:
|
||||
case EnterNotify:
|
||||
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
|
||||
index f9cf4a33255..edde25b7b43 100644
|
||||
index 41cb1de8bbb..23b12a81215 100644
|
||||
--- a/dlls/winex11.drv/mouse.c
|
||||
+++ b/dlls/winex11.drv/mouse.c
|
||||
@@ -305,20 +305,32 @@ void x11drv_xinput_init(void)
|
||||
@ -176,17 +176,16 @@ index f9cf4a33255..edde25b7b43 100644
|
||||
NtUserDestroyWindow( msg_hwnd );
|
||||
return FALSE;
|
||||
}
|
||||
@@ -533,7 +560,7 @@ LRESULT clip_cursor_notify( HWND hwnd, HWND prev_clip_hwnd, HWND new_clip_hwnd )
|
||||
TRACE( "clip hwnd reset from %p\n", hwnd );
|
||||
data->clip_hwnd = 0;
|
||||
data->clip_reset = NtGetTickCount();
|
||||
- disable_xinput2();
|
||||
+ x11drv_xinput_disable( data->display, DefaultRootWindow( data->display ), PointerMotionMask );
|
||||
NtUserDestroyWindow( hwnd );
|
||||
}
|
||||
else if (prev_clip_hwnd)
|
||||
@@ -483,7 +510,6 @@ static void ungrab_clipping_window(void)
|
||||
clipping_cursor = FALSE;
|
||||
NtUserDestroyWindow( data->clip_hwnd );
|
||||
data->clip_hwnd = 0;
|
||||
- disable_xinput2();
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
|
||||
index 63827aa1aa6..39aff46c864 100644
|
||||
index facf4f88e17..b3e42548f12 100644
|
||||
--- a/dlls/winex11.drv/window.c
|
||||
+++ b/dlls/winex11.drv/window.c
|
||||
@@ -362,6 +362,7 @@ static void sync_window_style( struct x11drv_win_data *data )
|
||||
@ -214,7 +213,7 @@ index 63827aa1aa6..39aff46c864 100644
|
||||
NtUserSetProp( hwnd, clip_window_prop, (HANDLE)data->clip_window );
|
||||
X11DRV_DisplayDevices_RegisterEventHandlers();
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 5d176a9ef14..5666cd26434 100644
|
||||
index 57dc9fdeb3c..c3f58f49b7d 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -264,6 +264,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN;
|
||||
@ -241,9 +240,9 @@ index 5d176a9ef14..5666cd26434 100644
|
||||
struct x11drv_thread_data
|
||||
{
|
||||
Display *display;
|
||||
@@ -395,7 +405,7 @@ struct x11drv_thread_data
|
||||
@@ -394,7 +404,7 @@ struct x11drv_thread_data
|
||||
Window clip_window; /* window used for cursor clipping */
|
||||
HWND clip_hwnd; /* message window stored in desktop while clipping is active */
|
||||
DWORD clip_reset; /* time when clipping was last reset */
|
||||
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
|
||||
- enum { xi_unavailable = -1, xi_unknown, xi_disabled, xi_enabled } xi2_state; /* XInput2 state */
|
||||
+ enum xi2_state xi2_state; /* XInput2 state */
|
||||
|
@ -1,4 +1,4 @@
|
||||
From c49e3afea43630cefb5c8ee9012b2ffd48a819e5 Mon Sep 17 00:00:00 2001
|
||||
From 0df09be29ae67643b6a08986fa88bcee2026cd48 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Sun, 24 Oct 2021 22:30:56 +0200
|
||||
Subject: [PATCH] winex11.drv: Advertise XInput2 version 2.1 support.
|
||||
@ -22,10 +22,10 @@ device events only and get rid of slave device id tracking.
|
||||
2 files changed, 5 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
|
||||
index ea5e34059ec..b9ff9f38014 100644
|
||||
index 608142a32e6..2d4453e320a 100644
|
||||
--- a/dlls/winex11.drv/mouse.c
|
||||
+++ b/dlls/winex11.drv/mouse.c
|
||||
@@ -284,7 +284,7 @@ void x11drv_xinput_init(void)
|
||||
@@ -285,7 +285,7 @@ void x11drv_xinput_init(void)
|
||||
{
|
||||
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
|
||||
struct x11drv_thread_data *data = x11drv_thread_data();
|
||||
@ -34,7 +34,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
|
||||
if (data->xi2_state != xi_unknown) return;
|
||||
|
||||
@@ -297,7 +297,7 @@ void x11drv_xinput_init(void)
|
||||
@@ -298,7 +298,7 @@ void x11drv_xinput_init(void)
|
||||
else
|
||||
{
|
||||
data->xi2_state = xi_unavailable;
|
||||
@ -43,7 +43,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -333,7 +333,7 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask )
|
||||
@@ -334,7 +334,7 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask )
|
||||
|
||||
mask.mask = mask_bits;
|
||||
mask.mask_len = sizeof(mask_bits);
|
||||
@ -52,7 +52,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
memset( mask_bits, 0, sizeof(mask_bits) );
|
||||
XISetMask( mask_bits, XI_DeviceChanged );
|
||||
XISetMask( mask_bits, XI_RawMotion );
|
||||
@@ -346,16 +346,6 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask )
|
||||
@@ -347,16 +347,6 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask )
|
||||
update_relative_valuators( pointer_info->classes, pointer_info->num_classes );
|
||||
pXIFreeDeviceInfo( pointer_info );
|
||||
|
||||
@ -69,7 +69,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
data->xi2_state = xi_enabled;
|
||||
}
|
||||
|
||||
@@ -388,19 +378,16 @@ void x11drv_xinput_disable( Display *display, Window window, long event_mask )
|
||||
@@ -389,19 +379,16 @@ void x11drv_xinput_disable( Display *display, Window window, long event_mask )
|
||||
|
||||
mask.mask = NULL;
|
||||
mask.mask_len = 0;
|
||||
@ -90,7 +90,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
data->xi2_state = xi_disabled;
|
||||
#endif
|
||||
}
|
||||
@@ -1860,7 +1847,6 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev )
|
||||
@@ -1736,7 +1723,6 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev )
|
||||
if (event->reason != XISlaveSwitch) return FALSE;
|
||||
|
||||
update_relative_valuators( event->classes, event->num_classes );
|
||||
@ -98,7 +98,7 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1876,25 +1862,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input )
|
||||
@@ -1752,25 +1738,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input )
|
||||
if (x->number < 0 || y->number < 0) return FALSE;
|
||||
if (!event->valuators.mask_len) return FALSE;
|
||||
if (thread_data->xi2_state != xi_enabled) return FALSE;
|
||||
@ -126,11 +126,11 @@ index ea5e34059ec..b9ff9f38014 100644
|
||||
virtual_rect = NtUserGetVirtualScreenRect();
|
||||
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 344625aff71..3e4d49d3dcf 100644
|
||||
index c3f58f49b7d..225b1534159 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -394,12 +394,9 @@ struct x11drv_thread_data
|
||||
DWORD clip_reset; /* time when clipping was last reset */
|
||||
@@ -405,12 +405,9 @@ struct x11drv_thread_data
|
||||
HWND clip_hwnd; /* message window stored in desktop while clipping is active */
|
||||
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
|
||||
enum xi2_state xi2_state; /* XInput2 state */
|
||||
- void *xi2_devices; /* list of XInput2 devices (valid when state is enabled) */
|
||||
@ -143,5 +143,5 @@ index 344625aff71..3e4d49d3dcf 100644
|
||||
};
|
||||
|
||||
--
|
||||
2.35.1
|
||||
2.40.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a09b36f783354e7cdd1e44fc57195b0136c8b2fd Mon Sep 17 00:00:00 2001
|
||||
From 1bcdd8784df9149082a1686bb1a346a0d2f5bd28 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Thu, 19 Dec 2019 22:34:44 +0100
|
||||
Subject: [PATCH] winex11.drv: Keep track of pointer and device button
|
||||
@ -16,7 +16,7 @@ Original patch by Andrew Eikum <aeikum@codeweavers.com>.
|
||||
4 files changed, 106 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index b1c47d5258e..c6a167dc4c6 100644
|
||||
index 195cc65eddb..83169a9bb4d 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -1811,13 +1811,24 @@ BOOL X11DRV_MappingNotify( HWND dummy, XEvent *event )
|
||||
@ -51,7 +51,7 @@ index b1c47d5258e..c6a167dc4c6 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
|
||||
index 00c55802245..e25b3e7728a 100644
|
||||
index 2d4453e320a..abf14ac55b4 100644
|
||||
--- a/dlls/winex11.drv/mouse.c
|
||||
+++ b/dlls/winex11.drv/mouse.c
|
||||
@@ -30,6 +30,9 @@
|
||||
@ -150,7 +150,7 @@ index 00c55802245..e25b3e7728a 100644
|
||||
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
|
||||
/***********************************************************************
|
||||
* update_relative_valuators
|
||||
@@ -1876,6 +1951,8 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev )
|
||||
@@ -1723,6 +1798,8 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev )
|
||||
if (event->reason != XISlaveSwitch) return FALSE;
|
||||
|
||||
update_relative_valuators( event->classes, event->num_classes );
|
||||
@ -159,7 +159,7 @@ index 00c55802245..e25b3e7728a 100644
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1963,13 +2040,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev )
|
||||
@@ -1810,13 +1887,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev )
|
||||
|
||||
#endif /* HAVE_X11_EXTENSIONS_XINPUT2_H */
|
||||
|
||||
@ -174,7 +174,7 @@ index 00c55802245..e25b3e7728a 100644
|
||||
int event, error;
|
||||
void *libxi_handle = dlopen( SONAME_LIBXI, RTLD_NOW );
|
||||
|
||||
@@ -1985,11 +2061,20 @@ void x11drv_xinput_load(void)
|
||||
@@ -1832,11 +1908,20 @@ void x11drv_xinput_load(void)
|
||||
return; \
|
||||
}
|
||||
|
||||
@ -196,11 +196,11 @@ index 00c55802245..e25b3e7728a 100644
|
||||
|
||||
xinput2_available = XQueryExtension( gdi_display, "XInputExtension", &xinput2_opcode, &event, &error );
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 7fcb9300ba0..38cacb4d3d4 100644
|
||||
index 225b1534159..29c7259134a 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -702,6 +702,7 @@ extern void retry_grab_clipping_window(void) DECLSPEC_HIDDEN;
|
||||
extern BOOL clip_fullscreen_window( HWND hwnd, BOOL reset ) DECLSPEC_HIDDEN;
|
||||
@@ -695,6 +695,7 @@ extern void sync_window_cursor( Window window ) DECLSPEC_HIDDEN;
|
||||
extern void retry_grab_clipping_window(void) DECLSPEC_HIDDEN;
|
||||
extern void move_resize_window( HWND hwnd, int dir ) DECLSPEC_HIDDEN;
|
||||
extern void X11DRV_InitKeyboard( Display *display ) DECLSPEC_HIDDEN;
|
||||
+extern void X11DRV_InitMouse( Display *display ) DECLSPEC_HIDDEN;
|
||||
@ -208,10 +208,10 @@ index 7fcb9300ba0..38cacb4d3d4 100644
|
||||
extern HWND *build_hwnd_list(void) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index 6457c0a0b93..e449530749e 100644
|
||||
index 2691f40d750..fbff380c2b0 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -708,6 +708,7 @@ static NTSTATUS x11drv_init( void *arg )
|
||||
@@ -705,6 +705,7 @@ static NTSTATUS x11drv_init( void *arg )
|
||||
|
||||
XkbUseExtension( gdi_display, NULL, NULL );
|
||||
X11DRV_InitKeyboard( gdi_display );
|
||||
@ -220,5 +220,5 @@ index 6457c0a0b93..e449530749e 100644
|
||||
|
||||
init_user_driver();
|
||||
--
|
||||
2.40.0
|
||||
2.40.1
|
||||
|
||||
|
@ -1,2 +1,3 @@
|
||||
Fixes: [42631] Mouse drift, jump or don't react to small slow movements in Unity-engine games and Fallout 4 (partly fixed in Unity games, have walkaround in Fallout4 )
|
||||
Fixes: [42675] Overwatch: Phantom mouse input / view pulled up to ceiling
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 364612d585a26bb8b4b9f8428103585e05f7ee78 Mon Sep 17 00:00:00 2001
|
||||
From 8c830f61a85e634b1fc135f6fe90a1dd5e45d158 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
|
||||
Date: Mon, 22 Jul 2019 15:29:25 +0300
|
||||
Subject: [PATCH] user32/focus: Prevent a recursive loop with the activation
|
||||
@ -15,15 +15,15 @@ actually depend on this behavior, so it is needed.
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46274
|
||||
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
|
||||
---
|
||||
dlls/win32u/input.c | 41 ++++++++++++++++++++++++------------
|
||||
dlls/win32u/input.c | 42 +++++++++++++++++++++++++-----------
|
||||
dlls/win32u/ntuser_private.h | 1 +
|
||||
2 files changed, 29 insertions(+), 13 deletions(-)
|
||||
2 files changed, 30 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index f3b724e7010..9f89f21059f 100644
|
||||
index cbdd4b195d3..241d07cefd2 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -1599,7 +1599,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
@@ -1810,7 +1810,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
{
|
||||
HWND previous = get_active_window();
|
||||
BOOL ret;
|
||||
@ -32,8 +32,8 @@ index f3b724e7010..9f89f21059f 100644
|
||||
CBTACTIVATESTRUCT cbt;
|
||||
|
||||
if (previous == hwnd)
|
||||
@@ -1608,16 +1608,24 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
return TRUE;
|
||||
@@ -1819,16 +1819,24 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
goto done;
|
||||
}
|
||||
|
||||
- /* call CBT hook chain */
|
||||
@ -66,7 +66,7 @@ index f3b724e7010..9f89f21059f 100644
|
||||
}
|
||||
|
||||
SERVER_START_REQ( set_active_window )
|
||||
@@ -1637,7 +1645,11 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
@@ -1848,7 +1856,11 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
if (send_message( hwnd, WM_QUERYNEWPALETTE, 0, 0 ))
|
||||
send_message_timeout( HWND_BROADCAST, WM_PALETTEISCHANGING, (WPARAM)hwnd, 0,
|
||||
SMTO_ABORTIFHUNG, 2000, FALSE );
|
||||
@ -79,7 +79,7 @@ index f3b724e7010..9f89f21059f 100644
|
||||
}
|
||||
|
||||
old_thread = previous ? get_window_thread( previous, NULL ) : 0;
|
||||
@@ -1669,7 +1681,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
@@ -1880,7 +1892,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,28 +88,26 @@ index f3b724e7010..9f89f21059f 100644
|
||||
{
|
||||
send_message( hwnd, WM_NCACTIVATE, hwnd == NtUserGetForegroundWindow(), (LPARAM)previous );
|
||||
send_message( hwnd, WM_ACTIVATE,
|
||||
@@ -1689,12 +1701,15 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
/* Do not change focus if the window is no more active */
|
||||
if (hwnd == info.hwndActive)
|
||||
{
|
||||
+ /* this line exists to keep this patch from applying in the wrong place */
|
||||
if (!info.hwndFocus || !hwnd || NtUserGetAncestor( info.hwndFocus, GA_ROOT ) != hwnd)
|
||||
set_focus_window( hwnd );
|
||||
@@ -1914,9 +1926,13 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
}
|
||||
}
|
||||
|
||||
- return TRUE;
|
||||
+clear_flags:
|
||||
+ win_set_flags(hwnd, 0, WIN_IS_IN_ACTIVATION);
|
||||
+
|
||||
done:
|
||||
if (hwnd) clip_fullscreen_window( hwnd, FALSE );
|
||||
- return TRUE;
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h
|
||||
index 8287126258e..38ac4498a83 100644
|
||||
index b39e38db5d6..4be55209265 100644
|
||||
--- a/dlls/win32u/ntuser_private.h
|
||||
+++ b/dlls/win32u/ntuser_private.h
|
||||
@@ -104,6 +104,7 @@ typedef struct tagWND
|
||||
@@ -100,6 +100,7 @@ typedef struct tagWND
|
||||
#define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0020 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */
|
||||
#define WIN_CHILDREN_MOVED 0x0040 /* children may have moved, ignore stored positions */
|
||||
#define WIN_HAS_IME_WIN 0x0080 /* the window has been registered with imm32 */
|
||||
@ -118,5 +116,5 @@ index 8287126258e..38ac4498a83 100644
|
||||
#define WND_OTHER_PROCESS ((WND *)1) /* returned by get_win_ptr on unknown window handles */
|
||||
#define WND_DESKTOP ((WND *)2) /* returned by get_win_ptr on the desktop window */
|
||||
--
|
||||
2.37.2
|
||||
2.40.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7701298b62301e551fd7514f79f19eabacc66cac Mon Sep 17 00:00:00 2001
|
||||
From 4ae28b915b829e0a0e1cd5afa9d91cb2c1f7a149 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 6 Jan 2023 08:09:11 +0100
|
||||
Subject: [PATCH] winex11: Use the user configured keyboard layout if any.
|
||||
@ -12,7 +12,7 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
3 files changed, 33 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index 7406aabdf40..4fc502cfe5d 100644
|
||||
index a9f172db9df..087026f7d5f 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -931,7 +931,6 @@ static const struct {
|
||||
@ -94,18 +94,18 @@ index 7406aabdf40..4fc502cfe5d 100644
|
||||
syms = (keysyms_per_keycode > 4) ? 4 : keysyms_per_keycode;
|
||||
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 12be88a31c5..653d2fe80e3 100644
|
||||
index 8798a49e506..80dbbee3727 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -455,6 +455,7 @@ extern BOOL use_system_cursors DECLSPEC_HIDDEN;
|
||||
@@ -456,6 +456,7 @@ extern BOOL use_primary_selection DECLSPEC_HIDDEN;
|
||||
extern BOOL use_system_cursors DECLSPEC_HIDDEN;
|
||||
extern BOOL show_systray DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_pointer DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_fullscreen DECLSPEC_HIDDEN;
|
||||
+extern int keyboard_layout DECLSPEC_HIDDEN;
|
||||
extern BOOL usexcomposite DECLSPEC_HIDDEN;
|
||||
extern BOOL managed_mode DECLSPEC_HIDDEN;
|
||||
extern BOOL decorated_mode DECLSPEC_HIDDEN;
|
||||
@@ -723,6 +724,7 @@ extern void init_recursive_mutex( pthread_mutex_t *mutex ) DECLSPEC_HIDDEN;
|
||||
@@ -716,6 +717,7 @@ extern void init_recursive_mutex( pthread_mutex_t *mutex ) DECLSPEC_HIDDEN;
|
||||
|
||||
/* keyboard.c */
|
||||
|
||||
@ -114,18 +114,18 @@ index 12be88a31c5..653d2fe80e3 100644
|
||||
|
||||
#define DEPTH_COUNT 3
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index 751bf2b4449..7056cf6643d 100644
|
||||
index e752302b236..05fe0ad8955 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -76,6 +76,7 @@ BOOL use_system_cursors = TRUE;
|
||||
@@ -75,6 +75,7 @@ BOOL use_primary_selection = FALSE;
|
||||
BOOL use_system_cursors = TRUE;
|
||||
BOOL show_systray = TRUE;
|
||||
BOOL grab_pointer = TRUE;
|
||||
BOOL grab_fullscreen = FALSE;
|
||||
+int keyboard_layout = -1;
|
||||
BOOL managed_mode = TRUE;
|
||||
BOOL decorated_mode = TRUE;
|
||||
BOOL private_color_map = FALSE;
|
||||
@@ -578,6 +579,9 @@ static void setup_options(void)
|
||||
@@ -575,6 +576,9 @@ static void setup_options(void)
|
||||
if (!get_config_key( hkey, appkey, "GrabFullscreen", buffer, sizeof(buffer) ))
|
||||
grab_fullscreen = IS_OPTION_TRUE( buffer[0] );
|
||||
|
||||
@ -136,5 +136,5 @@ index 751bf2b4449..7056cf6643d 100644
|
||||
if (p) set_reg_string_value( hkey, "KeyboardLayoutList", p, len * sizeof(WCHAR) );
|
||||
free( p );
|
||||
--
|
||||
2.39.2
|
||||
2.40.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 0f7681a0db7d45bbd3f76964bfc1d0cfe87cbbfc Mon Sep 17 00:00:00 2001
|
||||
From ec9488b146cde690e9015cd1ec442471176c2751 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Wed, 30 Nov 2022 18:46:00 +0100
|
||||
Subject: [PATCH] winex11: Support fixed X11 keycode to scancode conversion.
|
||||
@ -16,7 +16,7 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
3 files changed, 47 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index 2fa585d38b6..9a3890424a0 100644
|
||||
index 03d24edb44f..caccf34d947 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -66,6 +66,46 @@ static const unsigned int ControlMask = 1 << 2;
|
||||
@ -66,7 +66,7 @@ index 2fa585d38b6..9a3890424a0 100644
|
||||
static int NumLockMask, ScrollLockMask, AltGrMask; /* mask in the XKeyEvent state */
|
||||
|
||||
static pthread_mutex_t kbd_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
@@ -1742,7 +1782,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1701,7 +1741,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
}
|
||||
TRACE("keycode %u => vkey %04X\n", e2.keycode, vkey);
|
||||
keyc2vkey[e2.keycode] = vkey;
|
||||
@ -75,7 +75,7 @@ index 2fa585d38b6..9a3890424a0 100644
|
||||
if ((vkey & 0xff) && vkey_used[(vkey & 0xff)])
|
||||
WARN("vkey %04X is being used by more than one keycode\n", vkey);
|
||||
vkey_used[(vkey & 0xff)] = 1;
|
||||
@@ -1853,7 +1893,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1812,7 +1852,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
#undef VKEY_IF_NOT_USED
|
||||
|
||||
/* If some keys still lack scancodes, assign some arbitrary ones to them now */
|
||||
@ -85,11 +85,11 @@ index 2fa585d38b6..9a3890424a0 100644
|
||||
const char *ksname;
|
||||
keysym = XkbKeycodeToKeysym( display, keyc, 0, 0 );
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 653d2fe80e3..30a9403f185 100644
|
||||
index 80dbbee3727..260dd80de59 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -456,6 +456,7 @@ extern BOOL show_systray DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_pointer DECLSPEC_HIDDEN;
|
||||
@@ -457,6 +457,7 @@ extern BOOL use_system_cursors DECLSPEC_HIDDEN;
|
||||
extern BOOL show_systray DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_fullscreen DECLSPEC_HIDDEN;
|
||||
extern int keyboard_layout DECLSPEC_HIDDEN;
|
||||
+extern BOOL keyboard_scancode_detect DECLSPEC_HIDDEN;
|
||||
@ -97,18 +97,18 @@ index 653d2fe80e3..30a9403f185 100644
|
||||
extern BOOL managed_mode DECLSPEC_HIDDEN;
|
||||
extern BOOL decorated_mode DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index 7056cf6643d..a9c0a150917 100644
|
||||
index 05fe0ad8955..802bbae7815 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -77,6 +77,7 @@ BOOL show_systray = TRUE;
|
||||
BOOL grab_pointer = TRUE;
|
||||
@@ -76,6 +76,7 @@ BOOL use_system_cursors = TRUE;
|
||||
BOOL show_systray = TRUE;
|
||||
BOOL grab_fullscreen = FALSE;
|
||||
int keyboard_layout = -1;
|
||||
+BOOL keyboard_scancode_detect = TRUE;
|
||||
BOOL managed_mode = TRUE;
|
||||
BOOL decorated_mode = TRUE;
|
||||
BOOL private_color_map = FALSE;
|
||||
@@ -586,6 +587,9 @@ static void setup_options(void)
|
||||
@@ -583,6 +584,9 @@ static void setup_options(void)
|
||||
if (p) set_reg_string_value( hkey, "KeyboardLayoutList", p, len * sizeof(WCHAR) );
|
||||
free( p );
|
||||
|
||||
@ -119,5 +119,5 @@ index 7056cf6643d..a9c0a150917 100644
|
||||
default_visual.depth = wcstol( buffer, NULL, 0 );
|
||||
|
||||
--
|
||||
2.39.2
|
||||
2.40.1
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 84b078263007bcc40fb246a75ce7a1bb3ca62d4a Mon Sep 17 00:00:00 2001
|
||||
From fea8e9e597fd7b92166b2e78321506b884051d99 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 6 Jan 2023 11:31:36 +0100
|
||||
Subject: [PATCH 9/9] winex11: Disable keyboard scancode auto-detection by
|
||||
default.
|
||||
Subject: [PATCH] winex11: Disable keyboard scancode auto-detection by default.
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30984
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
@ -12,11 +11,11 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index bbdd5ad7010..6568fcc1c41 100644
|
||||
index 802bbae7815..26cf404731b 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -80,7 +80,7 @@ BOOL show_systray = TRUE;
|
||||
BOOL grab_pointer = TRUE;
|
||||
@@ -76,7 +76,7 @@ BOOL use_system_cursors = TRUE;
|
||||
BOOL show_systray = TRUE;
|
||||
BOOL grab_fullscreen = FALSE;
|
||||
int keyboard_layout = -1;
|
||||
-BOOL keyboard_scancode_detect = TRUE;
|
||||
@ -38,5 +37,5 @@ index a9d83b45f00..3ee20d49874 100644
|
||||
else CheckDlgButton( dialog, IDC_KEYBOARD_SCANCODE_DETECT, BST_UNCHECKED );
|
||||
free( buffer );
|
||||
--
|
||||
2.39.1
|
||||
2.40.1
|
||||
|
||||
|
@ -1 +1 @@
|
||||
68a3b0077e64d1b5232ff75996b82766bcc64ced
|
||||
c7431990d815e664cf22267142b76cc59f21d192
|
||||
|
Loading…
Reference in New Issue
Block a user