mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Rebase against fe4379eb19a201d45bc0d2d51270db133fd23a77.
This commit is contained in:
parent
df2fd22e4d
commit
82cff8bbdb
@ -1,4 +1,4 @@
|
||||
From ab4c2acb67c445abb2b6db274f6e94bd5f3877ba Mon Sep 17 00:00:00 2001
|
||||
From cef4355bf086ab493401931ae635792bad1186f3 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 22 May 2020 16:37:37 +1000
|
||||
Subject: [PATCH] ntdll: NtQuerySystemInformation support
|
||||
@ -12,10 +12,10 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
2 files changed, 44 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
|
||||
index c5b2018bf30..6a0f4778790 100644
|
||||
index 909a7c5672f..cf36faf2b78 100644
|
||||
--- a/dlls/ntdll/unix/system.c
|
||||
+++ b/dlls/ntdll/unix/system.c
|
||||
@@ -2151,6 +2151,28 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2557,6 +2557,28 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
ret = STATUS_SUCCESS;
|
||||
break;
|
||||
|
||||
@ -45,13 +45,13 @@ index c5b2018bf30..6a0f4778790 100644
|
||||
FIXME( "(0x%08x,%p,0x%08x,%p) stub\n", class, info, size, ret_size );
|
||||
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 3ff15f28c15..bcc20b2d99e 100644
|
||||
index 9226f000557..7e85ee02552 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -986,10 +986,32 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
|
||||
SystemSuperfetchInformation = 79,
|
||||
@@ -988,10 +988,32 @@ typedef enum _SYSTEM_INFORMATION_CLASS {
|
||||
SystemMemoryListInformation = 80,
|
||||
SystemFileCacheInformationEx = 81,
|
||||
SystemDynamicTimeZoneInformation = 102,
|
||||
+ SystemCodeIntegrityInformation = 103,
|
||||
SystemLogicalProcessorInformationEx = 107,
|
||||
SystemInformationClassMax
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b4fb299179bc4c04fd78909a21b24fd7a6667e4c Mon Sep 17 00:00:00 2001
|
||||
From fb6d3997445d70ea0744205f47ede1d3be8c50c1 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Fri, 12 Apr 2019 20:04:03 -0500
|
||||
Subject: [PATCH] ntdll: Return ntdll.dll as the first entry for
|
||||
@ -9,7 +9,7 @@ Subject: [PATCH] ntdll: Return ntdll.dll as the first entry for
|
||||
1 file changed, 27 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
|
||||
index a57b040c533..f118db8a89f 100644
|
||||
index 0aa55a69ba1..60a92f39a7c 100644
|
||||
--- a/dlls/ntdll/unix/system.c
|
||||
+++ b/dlls/ntdll/unix/system.c
|
||||
@@ -1630,6 +1630,32 @@ static void get_performance_info( SYSTEM_PERFORMANCE_INFORMATION *info )
|
||||
@ -43,9 +43,9 @@ index a57b040c533..f118db8a89f 100644
|
||||
+ sm->NameOffset = (ptr != NULL) ? (ptr - str.Buffer + 1) : 0;
|
||||
+}
|
||||
|
||||
/******************************************************************************
|
||||
* NtQuerySystemInformation (NTDLL.@)
|
||||
@@ -1943,7 +1969,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
/* calculate the mday of dst change date, so that for instance Sun 5 Oct 2007
|
||||
* (last Sunday in October of 2007) becomes Sun Oct 28 2007
|
||||
@@ -2319,7 +2345,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
|
||||
FIXME("returning fake driver list\n");
|
||||
smi->ModulesCount = 1;
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "1f6423f778f7036a3875613e10b9c8c3b84584f0"
|
||||
echo "fe4379eb19a201d45bc0d2d51270db133fd23a77"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -223,7 +223,6 @@ patch_enable_all ()
|
||||
enable_server_FileEndOfFileInformation="$1"
|
||||
enable_server_File_Permissions="$1"
|
||||
enable_server_Inherited_ACLs="$1"
|
||||
enable_server_Key_State="$1"
|
||||
enable_server_Object_Types="$1"
|
||||
enable_server_PeekMessage="$1"
|
||||
enable_server_Registry_Notifications="$1"
|
||||
@ -266,10 +265,6 @@ patch_enable_all ()
|
||||
enable_user32_ScrollWindowEx="$1"
|
||||
enable_user32_ShowWindow="$1"
|
||||
enable_user32_msgbox_Support_WM_COPY_mesg="$1"
|
||||
enable_user32_rawinput_hid="$1"
|
||||
enable_user32_rawinput_mouse="$1"
|
||||
enable_user32_rawinput_mouse_experimental="$1"
|
||||
enable_user32_rawinput_nolegacy="$1"
|
||||
enable_user32_recursive_activation="$1"
|
||||
enable_user32_window_activation="$1"
|
||||
enable_uxtheme_CloseThemeClass="$1"
|
||||
@ -761,9 +756,6 @@ patch_enable ()
|
||||
server-Inherited_ACLs)
|
||||
enable_server_Inherited_ACLs="$2"
|
||||
;;
|
||||
server-Key_State)
|
||||
enable_server_Key_State="$2"
|
||||
;;
|
||||
server-Object_Types)
|
||||
enable_server_Object_Types="$2"
|
||||
;;
|
||||
@ -890,18 +882,6 @@ patch_enable ()
|
||||
user32-msgbox-Support-WM_COPY-mesg)
|
||||
enable_user32_msgbox_Support_WM_COPY_mesg="$2"
|
||||
;;
|
||||
user32-rawinput-hid)
|
||||
enable_user32_rawinput_hid="$2"
|
||||
;;
|
||||
user32-rawinput-mouse)
|
||||
enable_user32_rawinput_mouse="$2"
|
||||
;;
|
||||
user32-rawinput-mouse-experimental)
|
||||
enable_user32_rawinput_mouse_experimental="$2"
|
||||
;;
|
||||
user32-rawinput-nolegacy)
|
||||
enable_user32_rawinput_nolegacy="$2"
|
||||
;;
|
||||
user32-recursive-activation)
|
||||
enable_user32_recursive_activation="$2"
|
||||
;;
|
||||
@ -1512,42 +1492,6 @@ if test "$enable_user32_window_activation" -eq 1; then
|
||||
enable_user32_recursive_activation=1
|
||||
fi
|
||||
|
||||
if test "$enable_user32_rawinput_mouse_experimental" -eq 1; then
|
||||
if test "$enable_user32_rawinput_nolegacy" -gt 1; then
|
||||
abort "Patchset user32-rawinput-nolegacy disabled, but user32-rawinput-mouse-experimental depends on that."
|
||||
fi
|
||||
enable_user32_rawinput_nolegacy=1
|
||||
fi
|
||||
|
||||
if test "$enable_user32_rawinput_hid" -eq 1; then
|
||||
if test "$enable_user32_rawinput_nolegacy" -gt 1; then
|
||||
abort "Patchset user32-rawinput-nolegacy disabled, but user32-rawinput-hid depends on that."
|
||||
fi
|
||||
enable_user32_rawinput_nolegacy=1
|
||||
fi
|
||||
|
||||
if test "$enable_user32_rawinput_nolegacy" -eq 1; then
|
||||
if test "$enable_server_Key_State" -gt 1; then
|
||||
abort "Patchset server-Key_State disabled, but user32-rawinput-nolegacy depends on that."
|
||||
fi
|
||||
if test "$enable_user32_rawinput_mouse" -gt 1; then
|
||||
abort "Patchset user32-rawinput-mouse disabled, but user32-rawinput-nolegacy depends on that."
|
||||
fi
|
||||
enable_server_Key_State=1
|
||||
enable_user32_rawinput_mouse=1
|
||||
fi
|
||||
|
||||
if test "$enable_user32_rawinput_mouse" -eq 1; then
|
||||
if test "$enable_loader_KeyboardLayouts" -gt 1; then
|
||||
abort "Patchset loader-KeyboardLayouts disabled, but user32-rawinput-mouse depends on that."
|
||||
fi
|
||||
if test "$enable_winex11_drv_mouse_coorrds" -gt 1; then
|
||||
abort "Patchset winex11.drv-mouse-coorrds disabled, but user32-rawinput-mouse depends on that."
|
||||
fi
|
||||
enable_loader_KeyboardLayouts=1
|
||||
enable_winex11_drv_mouse_coorrds=1
|
||||
fi
|
||||
|
||||
if test "$enable_stdole32_tlb_SLTG_Typelib" -eq 1; then
|
||||
if test "$enable_widl_SLTG_Typelib_Support" -gt 1; then
|
||||
abort "Patchset widl-SLTG_Typelib_Support disabled, but stdole32.tlb-SLTG_Typelib depends on that."
|
||||
@ -4506,24 +4450,6 @@ if test "$enable_server_Inherited_ACLs" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Key_State
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#31899] Implement locking and synchronization of key states
|
||||
# | * [#35907] Fix caps lock state issues with multiple processes
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * server/queue.c
|
||||
# |
|
||||
if test "$enable_server_Key_State" -eq 1; then
|
||||
patch_apply server-Key_State/0001-server-Introduce-a-helper-function-to-update-the-thr.patch
|
||||
patch_apply server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "server: Introduce a helper function to update the thread_input key state.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "server: Implement locking and synchronization of keystate buffer.", 3 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Object_Types
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
@ -5273,135 +5199,6 @@ if test "$enable_user32_msgbox_Support_WM_COPY_mesg" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset winex11.drv-mouse-coorrds
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#46309] winex11.drv: Use root-relative coordinates for events, if possible.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/winex11.drv/mouse.c
|
||||
# |
|
||||
if test "$enable_winex11_drv_mouse_coorrds" -eq 1; then
|
||||
patch_apply winex11.drv-mouse-coorrds/0001-winex11.drv-mouse-Use-root-relative-coordinates-for-ev.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Gabriel Ivăncescu", "winex11.drv/mouse: Use root-relative coordinates for events, if possible.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset user32-rawinput-mouse
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * loader-KeyboardLayouts, winex11.drv-mouse-coorrds
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#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 )
|
||||
# | * [#42675] Overwatch: Phantom mouse input / view pulled up to ceiling
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dinput/device_private.h, dlls/dinput/dinput_main.c, dlls/dinput/mouse.c, dlls/dinput8/tests/device.c,
|
||||
# | dlls/user32/input.c, dlls/user32/rawinput.c, dlls/user32/user32.spec, dlls/wineandroid.drv/keyboard.c,
|
||||
# | dlls/wineandroid.drv/window.c, dlls/winemac.drv/ime.c, dlls/winemac.drv/keyboard.c, dlls/winemac.drv/mouse.c,
|
||||
# | dlls/winex11.drv/event.c, dlls/winex11.drv/keyboard.c, dlls/winex11.drv/mouse.c, dlls/winex11.drv/x11drv.h,
|
||||
# | dlls/winex11.drv/x11drv_main.c, include/winuser.h, server/protocol.def, server/queue.c
|
||||
# |
|
||||
if test "$enable_user32_rawinput_mouse" -eq 1; then
|
||||
patch_apply user32-rawinput-mouse/0004-server-Add-send_hardware_message-flags-for-rawinput-.patch
|
||||
patch_apply user32-rawinput-mouse/0005-server-Broadcast-rawinput-message-if-request-flag-is.patch
|
||||
patch_apply user32-rawinput-mouse/0006-user32-Add-__wine_send_input-flags-to-hint-raw-input.patch
|
||||
patch_apply user32-rawinput-mouse/0007-winex11.drv-Advertise-XInput2-version-2.1-support.patch
|
||||
patch_apply user32-rawinput-mouse/0008-winex11.drv-Keep-track-of-pointer-and-device-button-.patch
|
||||
patch_apply user32-rawinput-mouse/0009-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch
|
||||
patch_apply user32-rawinput-mouse/0010-user32-Implement-GetRegisteredRawInputDevices.patch
|
||||
patch_apply user32-rawinput-mouse/0011-dinput8-Add-support-for-dinput-devices-that-use-raw-.patch
|
||||
patch_apply user32-rawinput-mouse/0012-dinput8-Use-raw-input-interface-for-dinput8-mouse-de.patch
|
||||
patch_apply user32-rawinput-mouse/0013-dinput-Fix-rawinput-events-sequence-number.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Add send_hardware_message flags for rawinput translation.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Broadcast rawinput message if request flag is SEND_HWMSG_RAWINPUT.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "user32: Add __wine_send_input flags to hint raw input translation.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "winex11.drv: Advertise XInput2 version 2.1 support.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "winex11.drv: Keep track of pointer and device button mappings.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "winex11.drv: Listen to RawMotion and RawButton* events in the desktop thread.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "user32: Implement GetRegisteredRawInputDevices.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput8: Add support for dinput devices that use raw input interface.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput8: Use raw input interface for dinput8 mouse device.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput: Fix rawinput events sequence number.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset user32-rawinput-nolegacy
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * server-Key_State, loader-KeyboardLayouts, winex11.drv-mouse-coorrds, user32-rawinput-mouse
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dinput/dinput_main.c, dlls/dinput8/tests/device.c, dlls/user32/rawinput.c, server/queue.c
|
||||
# |
|
||||
if test "$enable_user32_rawinput_nolegacy" -eq 1; then
|
||||
patch_apply user32-rawinput-nolegacy/0001-dinput8-tests-Add-test-for-DISCL_EXCLUSIVE-flag-inte.patch
|
||||
patch_apply user32-rawinput-nolegacy/0002-user32-Add-support-for-RIDEV_NOLEGACY-flag-in-Regist.patch
|
||||
patch_apply user32-rawinput-nolegacy/0003-dinput-Set-RIDEV_INPUTSINK-flag-only-when-DISCL_BACK.patch
|
||||
patch_apply user32-rawinput-nolegacy/0004-dinput-Set-correct-rawinput-flags-for-DISCL_EXCLUSIV.patch
|
||||
patch_apply user32-rawinput-nolegacy/0005-server-Update-desktop-cursor-pos-even-if-RIDEV_NOLEG.patch
|
||||
patch_apply user32-rawinput-nolegacy/0006-server-Also-update-the-key-state-if-RIDEV_NOLEGACY-i.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput8/tests: Add test for DISCL_EXCLUSIVE flag interaction with rawinput.", 1 },';
|
||||
printf '%s\n' '+ { "Derek Lesho", "user32: Add support for RIDEV_NOLEGACY flag in RegisterRawInputDevices.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput: Set RIDEV_INPUTSINK flag only when DISCL_BACKGROUND is requested.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "dinput: Set correct rawinput flags for DISCL_EXCLUSIVE.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Update desktop cursor pos even if RIDEV_NOLEGACY flag is set.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Also update the key state if RIDEV_NOLEGACY is used.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset user32-rawinput-hid
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * server-Key_State, loader-KeyboardLayouts, winex11.drv-mouse-coorrds, user32-rawinput-mouse, user32-rawinput-nolegacy
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/hidclass.sys/device.c, dlls/hidclass.sys/hid.h, dlls/hidclass.sys/pnp.c, dlls/user32/message.c,
|
||||
# | dlls/user32/rawinput.c, dlls/user32/user_private.h, server/protocol.def, server/queue.c, server/trace.c
|
||||
# |
|
||||
if test "$enable_user32_rawinput_hid" -eq 1; then
|
||||
patch_apply user32-rawinput-hid/0001-server-Add-process-argument-to-find_rawinput_device.patch
|
||||
patch_apply user32-rawinput-hid/0002-server-Allow-extra-data-for-hardware_msg_data-messag.patch
|
||||
patch_apply user32-rawinput-hid/0003-server-Add-HID-input-message-type-to-send_hardware_m.patch
|
||||
patch_apply user32-rawinput-hid/0004-user32-Implement-WM_INPUT-RIM_TYPEHID-message-handli.patch
|
||||
patch_apply user32-rawinput-hid/0005-hidclass.sys-Send-input-message-to-server-when-HID-r.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Add process argument to find_rawinput_device.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Allow extra data for hardware_msg_data message.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "server: Add HID input message type to send_hardware_message request.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "user32: Implement WM_INPUT/RIM_TYPEHID message handling.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "hidclass.sys: Send input message to server when HID report is received.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset user32-rawinput-mouse-experimental
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * server-Key_State, loader-KeyboardLayouts, winex11.drv-mouse-coorrds, user32-rawinput-mouse, user32-rawinput-nolegacy
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#45882] - Raw Input should use untransformed mouse values (affects Overwatch, several Source games).
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/user32/message.c, dlls/winex11.drv/mouse.c, dlls/winex11.drv/x11drv.h, dlls/winex11.drv/x11drv_main.c,
|
||||
# | server/queue.c
|
||||
# |
|
||||
if test "$enable_user32_rawinput_mouse_experimental" -eq 1; then
|
||||
patch_apply user32-rawinput-mouse-experimental/0001-winex11.drv-Add-support-for-absolute-RawMotion-event.patch
|
||||
patch_apply user32-rawinput-mouse-experimental/0002-winex11.drv-Send-relative-RawMotion-events-unprocess.patch
|
||||
patch_apply user32-rawinput-mouse-experimental/0003-winex11.drv-Accumulate-mouse-movement-to-avoid-round.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Derek Lesho", "winex11.drv: Add support for absolute RawMotion events.", 1 },';
|
||||
printf '%s\n' '+ { "Rémi Bernon", "winex11.drv: Send relative RawMotion events unprocessed.", 1 },';
|
||||
printf '%s\n' '+ { "Jordan Galby", "winex11.drv: Accumulate mouse movement to avoid rounding losses.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset user32-recursive-activation
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -6185,6 +5982,21 @@ if test "$enable_winex11_drv_Query_server_position" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset winex11.drv-mouse-coorrds
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#46309] winex11.drv: Use root-relative coordinates for events, if possible.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/winex11.drv/mouse.c
|
||||
# |
|
||||
if test "$enable_winex11_drv_mouse_coorrds" -eq 1; then
|
||||
patch_apply winex11.drv-mouse-coorrds/0001-winex11.drv-mouse-Use-root-relative-coordinates-for-ev.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Gabriel Ivăncescu", "winex11.drv/mouse: Use root-relative coordinates for events, if possible.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wininet-Cleanup
|
||||
# |
|
||||
# | Modified files:
|
||||
|
@ -1,88 +0,0 @@
|
||||
From 8ba268938be7e8f4c749be14decc23ebc67bcbc4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 12 Mar 2015 00:44:25 +0100
|
||||
Subject: server: Introduce a helper function to update the thread_input key
|
||||
state.
|
||||
|
||||
---
|
||||
server/queue.c | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 350d45a..5031ac4 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -1238,9 +1238,9 @@ static void set_input_key_state( unsigned char *keystate, unsigned char key, int
|
||||
else keystate[key] &= ~0x80;
|
||||
}
|
||||
|
||||
-/* update the input key state for a keyboard message */
|
||||
-static void update_input_key_state( struct desktop *desktop, unsigned char *keystate,
|
||||
- const struct message *msg )
|
||||
+/* update the key state for a keyboard message */
|
||||
+static void update_key_state( struct desktop *desktop, unsigned char *keystate,
|
||||
+ const struct message *msg )
|
||||
{
|
||||
unsigned char key;
|
||||
int down = 0;
|
||||
@@ -1302,6 +1302,12 @@ static void update_input_key_state( struct desktop *desktop, unsigned char *keys
|
||||
}
|
||||
}
|
||||
|
||||
+/* update the thread input key state for a keyboard message */
|
||||
+static void update_input_key_state( struct thread_input *input, const struct message *msg )
|
||||
+{
|
||||
+ update_key_state( input->desktop, input->keystate, msg );
|
||||
+}
|
||||
+
|
||||
/* release the hardware message currently being processed by the given thread */
|
||||
static void release_hardware_message( struct msg_queue *queue, unsigned int hw_id,
|
||||
int remove )
|
||||
@@ -1332,7 +1338,7 @@ static void release_hardware_message( struct msg_queue *queue, unsigned int hw_i
|
||||
}
|
||||
if (clr_bit) clear_queue_bits( queue, clr_bit );
|
||||
|
||||
- update_input_key_state( input->desktop, input->keystate, msg );
|
||||
+ update_input_key_state( input, msg );
|
||||
list_remove( &msg->entry );
|
||||
free_message( msg );
|
||||
}
|
||||
@@ -1451,7 +1457,7 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg
|
||||
struct thread_input *input;
|
||||
unsigned int msg_code;
|
||||
|
||||
- update_input_key_state( desktop, desktop->keystate, msg );
|
||||
+ update_key_state( desktop, desktop->keystate, msg );
|
||||
last_input_time = get_tick_count();
|
||||
if (msg->msg != WM_MOUSEMOVE) always_queue = 1;
|
||||
|
||||
@@ -1494,7 +1500,7 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg
|
||||
win = find_hardware_message_window( desktop, input, msg, &msg_code, &thread );
|
||||
if (!win || !thread)
|
||||
{
|
||||
- if (input) update_input_key_state( input->desktop, input->keystate, msg );
|
||||
+ if (input) update_input_key_state( input, msg );
|
||||
free_message( msg );
|
||||
return;
|
||||
}
|
||||
@@ -1936,7 +1942,7 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user
|
||||
if (!win || !win_thread)
|
||||
{
|
||||
/* no window at all, remove it */
|
||||
- update_input_key_state( input->desktop, input->keystate, msg );
|
||||
+ update_input_key_state( input, msg );
|
||||
list_remove( &msg->entry );
|
||||
free_message( msg );
|
||||
continue;
|
||||
@@ -1952,7 +1958,7 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user
|
||||
else
|
||||
{
|
||||
/* for another thread input, drop it */
|
||||
- update_input_key_state( input->desktop, input->keystate, msg );
|
||||
+ update_input_key_state( input, msg );
|
||||
list_remove( &msg->entry );
|
||||
free_message( msg );
|
||||
}
|
||||
--
|
||||
2.3.5
|
||||
|
@ -1,162 +0,0 @@
|
||||
From 6341882a5acdd20761caaf57b82b9397fd0eca5a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 10 Jul 2015 16:13:53 +0200
|
||||
Subject: server: Implement locking and synchronization of keystate buffer.
|
||||
(rev 3)
|
||||
|
||||
---
|
||||
server/queue.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 57 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index e4b2969..4b4ff5d 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -113,7 +113,9 @@ struct thread_input
|
||||
user_handle_t cursor; /* current cursor */
|
||||
int cursor_count; /* cursor show count */
|
||||
struct list msg_list; /* list of hardware messages */
|
||||
+ int lock_count; /* lock counter for keystate */
|
||||
unsigned char keystate[256]; /* state of each key */
|
||||
+ unsigned char shadow_keystate[256]; /* shadow copy of keystate */
|
||||
};
|
||||
|
||||
struct msg_queue
|
||||
@@ -124,6 +126,7 @@ struct msg_queue
|
||||
unsigned int wake_mask; /* wakeup mask */
|
||||
unsigned int changed_bits; /* changed wakeup bits */
|
||||
unsigned int changed_mask; /* changed wakeup mask */
|
||||
+ int keystate_locked; /* keystate is locked */
|
||||
int paint_count; /* pending paint messages count */
|
||||
int hotkey_count; /* pending hotkey messages count */
|
||||
int quit_message; /* is there a pending quit message? */
|
||||
@@ -251,9 +254,11 @@ static struct thread_input *create_thread_input( struct thread *thread )
|
||||
input->move_size = 0;
|
||||
input->cursor = 0;
|
||||
input->cursor_count = 0;
|
||||
+ input->lock_count = 0;
|
||||
list_init( &input->msg_list );
|
||||
set_caret_window( input, 0 );
|
||||
memset( input->keystate, 0, sizeof(input->keystate) );
|
||||
+ memset( input->shadow_keystate, 0, sizeof(input->shadow_keystate) );
|
||||
|
||||
if (!(input->desktop = get_thread_desktop( thread, 0 /* FIXME: access rights */ )))
|
||||
{
|
||||
@@ -284,6 +289,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
|
||||
queue->wake_mask = 0;
|
||||
queue->changed_bits = 0;
|
||||
queue->changed_mask = 0;
|
||||
+ queue->keystate_locked = 0;
|
||||
queue->paint_count = 0;
|
||||
queue->hotkey_count = 0;
|
||||
queue->quit_message = 0;
|
||||
@@ -327,8 +333,10 @@ static int assign_thread_input( struct thread *thread, struct thread_input *new_
|
||||
}
|
||||
if (queue->input)
|
||||
{
|
||||
+ if (queue->keystate_locked) queue->input->lock_count--;
|
||||
queue->input->cursor_count -= queue->cursor_count;
|
||||
release_object( queue->input );
|
||||
+ queue->keystate_locked = 0;
|
||||
}
|
||||
queue->input = (struct thread_input *)grab_object( new_input );
|
||||
new_input->cursor_count += queue->cursor_count;
|
||||
@@ -987,6 +995,7 @@ static void msg_queue_destroy( struct object *obj )
|
||||
free( timer );
|
||||
}
|
||||
if (queue->timeout) remove_timeout_user( queue->timeout );
|
||||
+ if (queue->keystate_locked) queue->input->lock_count--;
|
||||
queue->input->cursor_count -= queue->cursor_count;
|
||||
release_object( queue->input );
|
||||
if (queue->hooks) release_object( queue->hooks );
|
||||
@@ -1087,7 +1096,11 @@ int attach_thread_input( struct thread *thread_from, struct thread *thread_to )
|
||||
}
|
||||
|
||||
ret = assign_thread_input( thread_from, input );
|
||||
- if (ret) memset( input->keystate, 0, sizeof(input->keystate) );
|
||||
+ if (ret)
|
||||
+ {
|
||||
+ memset( input->keystate, 0, sizeof(input->keystate) );
|
||||
+ memset( input->shadow_keystate, 0, sizeof(input->shadow_keystate) );
|
||||
+ }
|
||||
release_object( input );
|
||||
return ret;
|
||||
}
|
||||
@@ -1321,9 +1334,30 @@ static void update_key_state( struct desktop *desktop, unsigned char *keystate,
|
||||
}
|
||||
}
|
||||
|
||||
+/* synchronizes the thread input key state with the desktop */
|
||||
+static void synchronize_input_key_state( struct thread_input *input )
|
||||
+{
|
||||
+ if (!input->lock_count)
|
||||
+ {
|
||||
+ unsigned char *shadow_keystate = input->shadow_keystate;
|
||||
+ unsigned char *keystate = input->keystate;
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < 256; i++)
|
||||
+ {
|
||||
+ if (input->desktop->keystate[i] != shadow_keystate[i])
|
||||
+ {
|
||||
+ keystate[i] = input->desktop->keystate[i] & ~0x40;
|
||||
+ shadow_keystate[i] = input->desktop->keystate[i];
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* update the thread input key state for a keyboard message */
|
||||
static void update_input_key_state( struct thread_input *input, const struct message *msg )
|
||||
{
|
||||
+ synchronize_input_key_state( input );
|
||||
update_key_state( input->desktop, input->keystate, msg );
|
||||
}
|
||||
|
||||
@@ -1532,6 +1566,15 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg
|
||||
else
|
||||
{
|
||||
msg->unique_id = 0; /* will be set once we return it to the app */
|
||||
+
|
||||
+ /* lock the keystate on the first hardware message */
|
||||
+ if (!thread->queue->keystate_locked)
|
||||
+ {
|
||||
+ synchronize_input_key_state( input );
|
||||
+ input->lock_count++;
|
||||
+ thread->queue->keystate_locked = 1;
|
||||
+ }
|
||||
+
|
||||
list_add_tail( &input->msg_list, &msg->entry );
|
||||
set_queue_bits( thread->queue, get_hardware_msg_bit(msg) );
|
||||
}
|
||||
@@ -2411,6 +2454,13 @@ DECL_HANDLER(get_message)
|
||||
queue->last_get_msg = current_time;
|
||||
if (!filter) filter = QS_ALLINPUT;
|
||||
|
||||
+ /* no longer lock the keystate if we have processed all input */
|
||||
+ if (queue->keystate_locked && !(queue->wake_bits & QS_ALLINPUT))
|
||||
+ {
|
||||
+ queue->input->lock_count--;
|
||||
+ queue->keystate_locked = 0;
|
||||
+ }
|
||||
+
|
||||
/* first check for sent messages */
|
||||
if ((ptr = list_head( &queue->msg_list[SEND_MESSAGE] )))
|
||||
{
|
||||
@@ -2861,7 +2911,12 @@ DECL_HANDLER(get_key_state)
|
||||
if (!(thread = get_thread_from_id( req->tid ))) return;
|
||||
if (thread->queue)
|
||||
{
|
||||
- if (req->key >= 0) reply->state = thread->queue->input->keystate[req->key & 0xff];
|
||||
+ if (req->key >= 0)
|
||||
+ {
|
||||
+ /* synchronize with desktop keystate, but _only_ if req->key is given */
|
||||
+ synchronize_input_key_state( thread->queue->input );
|
||||
+ reply->state = thread->queue->input->keystate[req->key & 0xff];
|
||||
+ }
|
||||
set_reply_data( thread->queue->input->keystate, size );
|
||||
release_object( thread );
|
||||
return;
|
||||
--
|
||||
2.5.0
|
||||
|
@ -1,3 +0,0 @@
|
||||
# Fixes: [27238] Fallback to global key state for threads without a queue
|
||||
Fixes: [31899] Implement locking and synchronization of key states
|
||||
Fixes: [35907] Fix caps lock state issues with multiple processes
|
@ -1,4 +1,4 @@
|
||||
From aff46ac5cdbb7e202e4b153b2f869c55a17da1fa Mon Sep 17 00:00:00 2001
|
||||
From 76c342fe6c01c59bfcf387f19046d78415227f3d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 8 Mar 2017 19:39:29 +0100
|
||||
Subject: [PATCH] ntdll: Mimic object type behavior for different windows
|
||||
@ -7,8 +7,8 @@ Subject: [PATCH] ntdll: Mimic object type behavior for different windows
|
||||
---
|
||||
dlls/ntdll/om.c | 5 +++-
|
||||
dlls/ntdll/tests/om.c | 65 +++++++++++++++++++++++++++++++++++++++-
|
||||
dlls/ntdll/unix/system.c | 18 +++++++++--
|
||||
3 files changed, 83 insertions(+), 5 deletions(-)
|
||||
dlls/ntdll/unix/system.c | 17 +++++++++--
|
||||
3 files changed, 82 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/om.c b/dlls/ntdll/om.c
|
||||
index 4fea106cc46..eea095acbf9 100644
|
||||
@ -135,11 +135,11 @@ index 398ad6bed4e..b538160f6d0 100644
|
||||
test_case_sensitive();
|
||||
test_namespace_pipe();
|
||||
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
|
||||
index b1b53256905..e317d34755c 100644
|
||||
index 9b42c475b47..828b891be9c 100644
|
||||
--- a/dlls/ntdll/unix/system.c
|
||||
+++ b/dlls/ntdll/unix/system.c
|
||||
@@ -1657,6 +1657,19 @@ static void get_ntdll_system_module(SYSTEM_MODULE *sm)
|
||||
sm->NameOffset = (ptr != NULL) ? (ptr - str.Buffer + 1) : 0;
|
||||
@@ -2024,6 +2024,18 @@ static void get_timezone_info( RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi )
|
||||
RtlLeaveCriticalSection( &TIME_tz_section );
|
||||
}
|
||||
|
||||
+static DWORD translate_object_index(DWORD index)
|
||||
@ -154,11 +154,10 @@ index b1b53256905..e317d34755c 100644
|
||||
+ else
|
||||
+ return index + 1;
|
||||
+}
|
||||
+
|
||||
|
||||
/******************************************************************************
|
||||
* NtQuerySystemInformation (NTDLL.@)
|
||||
*/
|
||||
@@ -2031,7 +2044,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2407,7 +2419,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
shi->Handle[i].OwnerPid = handle_info[i].owner;
|
||||
shi->Handle[i].HandleValue = handle_info[i].handle;
|
||||
shi->Handle[i].AccessMask = handle_info[i].access;
|
||||
@ -167,7 +166,7 @@ index b1b53256905..e317d34755c 100644
|
||||
/* FIXME: Fill out HandleFlags, ObjectPointer */
|
||||
}
|
||||
}
|
||||
@@ -2084,7 +2097,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2460,7 +2472,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
shi->Handle[i].UniqueProcessId = handle_info[i].owner;
|
||||
shi->Handle[i].HandleValue = handle_info[i].handle;
|
||||
shi->Handle[i].GrantedAccess = handle_info[i].access;
|
||||
@ -176,7 +175,7 @@ index b1b53256905..e317d34755c 100644
|
||||
/* FIXME: Fill out remaining fields */
|
||||
}
|
||||
}
|
||||
@@ -2314,7 +2327,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2720,7 +2732,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
# GetForegroundWindow(). Unfortunately, that patch is disabled, and I can't
|
||||
# find record of applications which want the other functions here to be faster.
|
||||
Depends: ntdll-Threading
|
||||
Depends: server-Key_State
|
||||
Depends: server-PeekMessage
|
||||
Depends: server-Signal_Thread
|
||||
Depends: user32-rawinput-nolegacy
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e03798a18cb82cfd9e0123c9d4f7c3b5e7547d8b Mon Sep 17 00:00:00 2001
|
||||
From 13f3b44e8f40766cc8ee4e59908bf83844c10255 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 29 May 2017 05:30:44 +0200
|
||||
Subject: [PATCH] user32/tests: Add tests for clicking through layered window.
|
||||
@ -15,18 +15,18 @@ FIXME:
|
||||
1 file changed, 156 insertions(+)
|
||||
|
||||
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
|
||||
index 91a595794a8..d03fe47c41c 100644
|
||||
index d0117f2ac5b..af6cc2cb69f 100644
|
||||
--- a/dlls/user32/tests/input.c
|
||||
+++ b/dlls/user32/tests/input.c
|
||||
@@ -54,6 +54,7 @@
|
||||
#include "windef.h"
|
||||
@@ -52,6 +52,7 @@
|
||||
#include "winbase.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
+#include "wingdi.h"
|
||||
#include "winnls.h"
|
||||
#include "ddk/hidsdi.h"
|
||||
|
||||
@@ -2216,6 +2217,7 @@ static void test_Input_mouse(void)
|
||||
@@ -2704,6 +2705,7 @@ static void test_Input_mouse(void)
|
||||
struct thread_data thread_data;
|
||||
HANDLE thread;
|
||||
DWORD thread_id;
|
||||
@ -34,7 +34,7 @@ index 91a595794a8..d03fe47c41c 100644
|
||||
POINT pt, pt_org;
|
||||
MSG msg;
|
||||
BOOL ret;
|
||||
@@ -2430,6 +2432,160 @@ static void test_Input_mouse(void)
|
||||
@@ -2918,6 +2920,160 @@ static void test_Input_mouse(void)
|
||||
ok(got_button_up, "expected WM_LBUTTONUP message\n");
|
||||
DestroyWindow(hwnd);
|
||||
ok(ReleaseCapture(), "ReleaseCapture failed\n");
|
||||
@ -196,5 +196,5 @@ index 91a595794a8..d03fe47c41c 100644
|
||||
|
||||
CloseHandle(thread_data.start_event);
|
||||
--
|
||||
2.24.0.rc1
|
||||
2.27.0
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
Depends: user32-rawinput-nolegacy
|
||||
Disabled: true
|
||||
|
@ -1,2 +1,3 @@
|
||||
Fixes: [45882] - Raw Input should use untransformed mouse values (affects Overwatch, several Source games).
|
||||
Depends: user32-rawinput-nolegacy
|
||||
Disabled: True
|
||||
|
@ -2,3 +2,4 @@ Fixes: [42631] Mouse drift, jump or don't react to small slow movements in Unity
|
||||
Fixes: [42675] Overwatch: Phantom mouse input / view pulled up to ceiling
|
||||
Depends: winex11.drv-mouse-coorrds
|
||||
Depends: loader-KeyboardLayouts
|
||||
Disabled: True
|
||||
|
@ -1,2 +1,2 @@
|
||||
Depends: user32-rawinput-mouse
|
||||
Depends: server-Key_State
|
||||
Disabled: True
|
||||
|
@ -1 +1 @@
|
||||
1f6423f778f7036a3875613e10b9c8c3b84584f0
|
||||
fe4379eb19a201d45bc0d2d51270db133fd23a77
|
||||
|
Loading…
x
Reference in New Issue
Block a user