You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dc27f103e5 | ||
|
d1bde95011 | ||
|
90d6184697 | ||
|
d10f51a658 | ||
|
bad4d30c2c | ||
|
3a1f2a42bb | ||
|
3aca66f24e | ||
|
32c64aa429 | ||
|
ffc4a7a5a0 | ||
|
13c3e61937 |
1
.github/workflows/macOS.yml
vendored
1
.github/workflows/macOS.yml
vendored
@@ -14,7 +14,6 @@ jobs:
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew update
|
||||
brew install --cask xquartz
|
||||
brew install bison \
|
||||
gphoto2 \
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From c4a4d47fb07faee6ef6d20b967e21eafe6a60ea4 Mon Sep 17 00:00:00 2001
|
||||
From f57e7a06cffc47773c647a10ed4d298b58fbd408 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 9 Jul 2019 14:13:28 +1000
|
||||
Subject: [PATCH] user32: Do not enumerate the registry in
|
||||
@@ -13,7 +13,7 @@ not the complete list from the registry.
|
||||
3 files changed, 36 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
|
||||
index bb7477ed482..55ab8d246e7 100644
|
||||
index c5387cf9212..2507a86e3b6 100644
|
||||
--- a/dlls/user32/input.c
|
||||
+++ b/dlls/user32/input.c
|
||||
@@ -494,7 +494,6 @@ BOOL WINAPI UnloadKeyboardLayout( HKL layout )
|
||||
@@ -25,11 +25,11 @@ index bb7477ed482..55ab8d246e7 100644
|
||||
* EnableMouseInPointer (USER32.@)
|
||||
*/
|
||||
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
|
||||
index 8477645fad5..e92548c7402 100644
|
||||
index bf913b8e6a6..8ac46bedc71 100644
|
||||
--- a/dlls/user32/tests/input.c
|
||||
+++ b/dlls/user32/tests/input.c
|
||||
@@ -4566,6 +4566,40 @@ static void test_SendInput(void)
|
||||
DestroyWindow( hwnd );
|
||||
@@ -4837,6 +4837,40 @@ static void test_EnableMouseInPointer( char **argv, BOOL enable )
|
||||
CloseHandle( info.hProcess );
|
||||
}
|
||||
|
||||
+static void test_GetKeyboardLayoutList(void)
|
||||
@@ -69,7 +69,7 @@ index 8477645fad5..e92548c7402 100644
|
||||
START_TEST(input)
|
||||
{
|
||||
char **argv;
|
||||
@@ -4608,6 +4642,7 @@ START_TEST(input)
|
||||
@@ -4887,6 +4921,7 @@ START_TEST(input)
|
||||
test_GetRawInputBuffer();
|
||||
test_RegisterRawInputDevices();
|
||||
test_rawinput(argv[0]);
|
||||
@@ -78,7 +78,7 @@ index 8477645fad5..e92548c7402 100644
|
||||
|
||||
if(pGetMouseMovePointsEx)
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index f3b724e7010..a971e1ee776 100644
|
||||
index fd16d03f733..fb452843803 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -934,11 +934,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
|
||||
@@ -129,5 +129,5 @@ index f3b724e7010..a971e1ee776 100644
|
||||
|
||||
return count;
|
||||
--
|
||||
2.37.2
|
||||
2.39.0
|
||||
|
||||
|
@@ -1,18 +1,18 @@
|
||||
From f3656ad722d12021db19a015a57fa9d2b9e72622 Mon Sep 17 00:00:00 2001
|
||||
From 7bbc11e52188ec7babe97270f03e2e5015ac22ff Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 26 May 2017 05:17:17 +0200
|
||||
Date: Tue, 30 Nov 2021 16:32:34 +0300
|
||||
Subject: [PATCH] ntdll: Implement opening files through nt device paths.
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/file.c | 25 +++++++-
|
||||
dlls/ntdll/unix/file.c | 124 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 146 insertions(+), 3 deletions(-)
|
||||
dlls/ntdll/unix/file.c | 134 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 156 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 839046a7488..8756c18c9e8 100644
|
||||
index 640fd2d81db..e8e8652334e 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -135,18 +135,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
@@ -137,18 +137,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
|
||||
static void create_file_test(void)
|
||||
{
|
||||
@@ -36,10 +36,10 @@ index 839046a7488..8756c18c9e8 100644
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
IO_STATUS_BLOCK io;
|
||||
UNICODE_STRING nameW;
|
||||
@@ -326,6 +330,25 @@ static void create_file_test(void)
|
||||
@@ -328,6 +332,25 @@ static void create_file_test(void)
|
||||
status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
ok( status == STATUS_OBJECT_NAME_INVALID,
|
||||
"query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
"query %s failed %lx\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
+
|
||||
+ GetWindowsDirectoryW( path, MAX_PATH );
|
||||
+ path[2] = 0;
|
||||
@@ -63,24 +63,31 @@ index 839046a7488..8756c18c9e8 100644
|
||||
|
||||
static void open_file_test(void)
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index d3750109a79..6250ada9570 100644
|
||||
index 67e0c6f0b40..25a03ef84f1 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -3297,8 +3297,8 @@ static NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, char *
|
||||
@@ -4494,7 +4494,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
- * nt_to_unix_file_name
|
||||
+ * nt_to_unix_file_name_internal
|
||||
*
|
||||
* Convert a file name from NT namespace to Unix namespace.
|
||||
*
|
||||
@@ -4502,7 +4502,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
* element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
|
||||
* returned, but the unix name is still filled in properly.
|
||||
*/
|
||||
-NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
- UNICODE_STRING *nt_name, UINT disposition )
|
||||
+static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
+ UNICODE_STRING *nt_name, UINT disposition )
|
||||
-NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, UINT disposition )
|
||||
+NTSTATUS nt_to_unix_file_name_internal( const OBJECT_ATTRIBUTES *attr, char **name_ret, UINT disposition )
|
||||
{
|
||||
static const WCHAR unixW[] = {'u','n','i','x'};
|
||||
static const WCHAR pipeW[] = {'p','i','p','e'};
|
||||
@@ -3436,6 +3436,126 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nam
|
||||
return status;
|
||||
HANDLE rootdir = attr->RootDirectory;
|
||||
enum server_fd_type type;
|
||||
@@ -4581,6 +4581,136 @@ reparse:
|
||||
}
|
||||
|
||||
|
||||
+/* read the contents of an NT symlink object */
|
||||
+static NTSTATUS read_nt_symlink( HANDLE root, UNICODE_STRING *name, WCHAR *target, size_t length )
|
||||
+{
|
||||
@@ -147,7 +154,7 @@ index d3750109a79..6250ada9570 100644
|
||||
+}
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * nt_to_unix_file_name (NTDLL.@) Not a Windows API
|
||||
+ * nt_to_unix_file_name
|
||||
+ *
|
||||
+ * Convert a file name from NT namespace to Unix namespace.
|
||||
+ *
|
||||
@@ -155,34 +162,40 @@ index d3750109a79..6250ada9570 100644
|
||||
+ * element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
|
||||
+ * returned, but the unix name is still filled in properly.
|
||||
+ */
|
||||
+NTSTATUS nt_to_unix_file_name( const UNICODE_STRING *nameW, char **unix_name_ret,
|
||||
+ UNICODE_STRING *nt_name, UINT disposition )
|
||||
+NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, UINT disposition )
|
||||
+{
|
||||
+ static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t','\\',0};
|
||||
+ static const WCHAR dosprefixW[] = {'\\','?','?','\\'};
|
||||
+ static const WCHAR deviceW[] = {'\\','D','e','v','i','c','e','\\',0};
|
||||
+ WCHAR *name, *ptr, *prefix, buffer[3] = {'c',':',0};
|
||||
+ UNICODE_STRING dospathW;
|
||||
+ UNICODE_STRING dospathW, *nameW;
|
||||
+ OBJECT_ATTRIBUTES attr_copy;
|
||||
+ size_t offset, name_len;
|
||||
+ NTSTATUS status;
|
||||
+
|
||||
+ if (!wcsnicmp( nameW->Buffer, deviceW, nameW->Length / sizeof(WCHAR) ))
|
||||
+ if (attr->RootDirectory) return nt_to_unix_file_name_internal( attr, name_ret, disposition );
|
||||
+
|
||||
+ nameW = attr->ObjectName;
|
||||
+
|
||||
+ if (nameW->Length >= sizeof(deviceW) - sizeof(WCHAR)
|
||||
+ && !wcsnicmp( nameW->Buffer, deviceW, ARRAY_SIZE(deviceW) - 1 ))
|
||||
+ {
|
||||
+ offset = sizeof(deviceW) / sizeof(WCHAR);
|
||||
+ while (offset * sizeof(WCHAR) < nameW->Length && nameW->Buffer[ offset ] != '\\') offset++;
|
||||
+ if ((status = nt_to_dos_device( nameW->Buffer, offset, buffer ))) return status;
|
||||
+ prefix = buffer;
|
||||
+ }
|
||||
+ else if (!wcsnicmp( nameW->Buffer, systemrootW, nameW->Length / sizeof(WCHAR) ))
|
||||
+ else if (nameW->Length >= sizeof(systemrootW) - sizeof(WCHAR) &&
|
||||
+ !wcsnicmp( nameW->Buffer, systemrootW, ARRAY_SIZE(systemrootW) - 1 ))
|
||||
+ {
|
||||
+ offset = (sizeof(systemrootW) - 1) / sizeof(WCHAR);
|
||||
+ prefix = user_shared_data->NtSystemRoot;
|
||||
+ }
|
||||
+ else
|
||||
+ return nt_to_unix_file_name_internal( nameW, unix_name_ret, nt_name, disposition );
|
||||
+ return nt_to_unix_file_name_internal( attr, name_ret, disposition );
|
||||
+
|
||||
+ name_len = sizeof(dosprefixW) + wcslen(prefix) * sizeof(WCHAR) +
|
||||
+ nameW->Length - offset * sizeof(WCHAR) + sizeof(WCHAR);
|
||||
+ name_len = sizeof(dosprefixW) + wcslen(prefix) * sizeof(WCHAR)
|
||||
+ + sizeof(WCHAR) /* '\\' */ + nameW->Length - offset * sizeof(WCHAR) + sizeof(WCHAR);
|
||||
+ if (!(name = malloc( name_len )))
|
||||
+ return STATUS_NO_MEMORY;
|
||||
+
|
||||
@@ -191,19 +204,23 @@ index d3750109a79..6250ada9570 100644
|
||||
+ ptr += sizeof(dosprefixW) / sizeof(WCHAR);
|
||||
+ wcscpy( ptr, prefix );
|
||||
+ ptr += wcslen(ptr);
|
||||
+ *ptr++ = '\\';
|
||||
+ memcpy( ptr, nameW->Buffer + offset, nameW->Length - offset * sizeof(WCHAR) );
|
||||
+ ptr[ nameW->Length / sizeof(WCHAR) - offset ] = 0;
|
||||
+
|
||||
+ dospathW.Buffer = name;
|
||||
+ dospathW.Length = wcslen( name ) * sizeof(WCHAR);
|
||||
+ status = nt_to_unix_file_name_internal( &dospathW, unix_name_ret, nt_name, disposition );
|
||||
+ attr_copy = *attr;
|
||||
+ attr_copy.ObjectName = &dospathW;
|
||||
+ status = nt_to_unix_file_name_internal( &attr_copy, name_ret, disposition );
|
||||
+
|
||||
+ free( name );
|
||||
+ return status;
|
||||
+}
|
||||
|
||||
/******************************************************************
|
||||
* collapse_path
|
||||
+
|
||||
/******************************************************************************
|
||||
* wine_nt_to_unix_file_name
|
||||
*
|
||||
--
|
||||
2.30.2
|
||||
2.38.1
|
||||
|
||||
|
@@ -1,4 +1,2 @@
|
||||
Fixes: [37487] Resolve \\SystemRoot\\ prefix when opening files
|
||||
Fixes: Implement opening files through nt device paths
|
||||
# Temporarily disabled until the upstream code stops being thrashed.
|
||||
Disabled: true
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 0e455713af03b7f91fea4332c893390a8de8ca44 Mon Sep 17 00:00:00 2001
|
||||
From 7e1c63548513ec95978c5cbc428555ac5ed7c1d2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 17 Jan 2016 00:50:50 +0100
|
||||
Subject: [PATCH] ntdll/tests: Add basic tests for RtlQueryPackageIdentity.
|
||||
@@ -20,20 +20,20 @@ index 90deb5865f8..428ebde23b3 100644
|
||||
C_SRCS = \
|
||||
atom.c \
|
||||
diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c
|
||||
index 2e0bfb650e4..cdb159479f2 100644
|
||||
index 1e5e8c2580c..3690402c268 100644
|
||||
--- a/dlls/ntdll/tests/rtl.c
|
||||
+++ b/dlls/ntdll/tests/rtl.c
|
||||
@@ -27,6 +27,9 @@
|
||||
#include "in6addr.h"
|
||||
@@ -28,6 +28,9 @@
|
||||
#include "inaddr.h"
|
||||
#include "ip2string.h"
|
||||
#include "wine/asm.h"
|
||||
+#include "initguid.h"
|
||||
+#define COBJMACROS
|
||||
+#include "shobjidl.h"
|
||||
|
||||
#ifndef __WINE_WINTERNL_H
|
||||
|
||||
@@ -80,6 +83,9 @@ static BOOL (WINAPI *pRtlIsCriticalSectionLocked)(CRITICAL_SECTION *);
|
||||
@@ -95,6 +98,9 @@ static BOOL (WINAPI *pRtlIsCriticalSectionLocked)(CRITICAL_SECTION *);
|
||||
static BOOL (WINAPI *pRtlIsCriticalSectionLockedByThread)(CRITICAL_SECTION *);
|
||||
static NTSTATUS (WINAPI *pRtlInitializeCriticalSectionEx)(CRITICAL_SECTION *, ULONG, ULONG);
|
||||
static NTSTATUS (WINAPI *pLdrEnumerateLoadedModules)(void *, void *, void *);
|
||||
@@ -43,7 +43,7 @@ index 2e0bfb650e4..cdb159479f2 100644
|
||||
static NTSTATUS (WINAPI *pLdrRegisterDllNotification)(ULONG, PLDR_DLL_NOTIFICATION_FUNCTION, void *, void **);
|
||||
static NTSTATUS (WINAPI *pLdrUnregisterDllNotification)(void *);
|
||||
|
||||
@@ -120,6 +126,9 @@ static void InitFunctionPtrs(void)
|
||||
@@ -137,6 +143,9 @@ static void InitFunctionPtrs(void)
|
||||
pRtlIsCriticalSectionLockedByThread = (void *)GetProcAddress(hntdll, "RtlIsCriticalSectionLockedByThread");
|
||||
pRtlInitializeCriticalSectionEx = (void *)GetProcAddress(hntdll, "RtlInitializeCriticalSectionEx");
|
||||
pLdrEnumerateLoadedModules = (void *)GetProcAddress(hntdll, "LdrEnumerateLoadedModules");
|
||||
@@ -53,7 +53,7 @@ index 2e0bfb650e4..cdb159479f2 100644
|
||||
pLdrRegisterDllNotification = (void *)GetProcAddress(hntdll, "LdrRegisterDllNotification");
|
||||
pLdrUnregisterDllNotification = (void *)GetProcAddress(hntdll, "LdrUnregisterDllNotification");
|
||||
}
|
||||
@@ -3730,6 +3739,76 @@ static void test_RtlFirstFreeAce(void)
|
||||
@@ -3775,6 +3784,76 @@ static void test_RtlFirstFreeAce(void)
|
||||
HeapFree(GetProcessHeap(), 0, acl);
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ index 2e0bfb650e4..cdb159479f2 100644
|
||||
START_TEST(rtl)
|
||||
{
|
||||
InitFunctionPtrs();
|
||||
@@ -3769,6 +3848,7 @@ START_TEST(rtl)
|
||||
@@ -3814,6 +3893,7 @@ START_TEST(rtl)
|
||||
test_RtlInitializeCriticalSectionEx();
|
||||
test_RtlLeaveCriticalSection();
|
||||
test_LdrEnumerateLoadedModules();
|
||||
@@ -139,5 +139,5 @@ index 2e0bfb650e4..cdb159479f2 100644
|
||||
test_LdrRegisterDllNotification();
|
||||
test_DbgPrint();
|
||||
--
|
||||
2.35.1
|
||||
2.39.0
|
||||
|
||||
|
@@ -51,13 +51,13 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "772badd0d7f3286a7881a71f16fad417e2d7787d"
|
||||
echo "9e33e4f4a26091fc02106a1cd874f77098b99883"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
version()
|
||||
{
|
||||
echo "Wine Staging 8.0-rc1"
|
||||
echo "Wine Staging 8.0-rc3"
|
||||
echo "Copyright (C) 2014-2019 the Wine Staging project authors."
|
||||
echo "Copyright (C) 2018-2020 Alistair Leslie-Hughes"
|
||||
echo ""
|
||||
@@ -138,6 +138,7 @@ patch_enable_all ()
|
||||
enable_ntdll_Hide_Wine_Exports="$1"
|
||||
enable_ntdll_Junction_Points="$1"
|
||||
enable_ntdll_Manifest_Range="$1"
|
||||
enable_ntdll_NtDevicePath="$1"
|
||||
enable_ntdll_NtQuerySection="$1"
|
||||
enable_ntdll_NtSetLdtEntries="$1"
|
||||
enable_ntdll_Placeholders="$1"
|
||||
@@ -425,6 +426,9 @@ patch_enable ()
|
||||
ntdll-Manifest_Range)
|
||||
enable_ntdll_Manifest_Range="$2"
|
||||
;;
|
||||
ntdll-NtDevicePath)
|
||||
enable_ntdll_NtDevicePath="$2"
|
||||
;;
|
||||
ntdll-NtQuerySection)
|
||||
enable_ntdll_NtQuerySection="$2"
|
||||
;;
|
||||
@@ -1632,6 +1636,7 @@ fi
|
||||
# | server/file.c, server/protocol.def
|
||||
# |
|
||||
if test "$enable_ntdll_Junction_Points" -eq 1; then
|
||||
patch_apply ntdll-Junction_Points/0000-include-Add-ntifs.h.patch
|
||||
patch_apply ntdll-Junction_Points/0001-ntdll-Add-support-for-creating-reparse-points.patch
|
||||
patch_apply ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-reparse-points.patch
|
||||
patch_apply ntdll-Junction_Points/0003-ntdll-Add-support-for-deleting-reparse-points.patch
|
||||
@@ -1657,7 +1662,6 @@ if test "$enable_ntdll_Junction_Points" -eq 1; then
|
||||
patch_apply ntdll-Junction_Points/0023-wcmd-Add-junction-point-support-to-mklink.patch
|
||||
patch_apply ntdll-Junction_Points/0024-ntdll-Add-support-for-creating-Unix-Linux-symlinks.patch
|
||||
patch_apply ntdll-Junction_Points/0025-ntdll-Report-regular-Unix-symlinks-as-WSL-Linux-Unix.patch
|
||||
patch_apply ntdll-Junction_Points/0026-include-Add-ntifs.h.patch
|
||||
fi
|
||||
|
||||
# Patchset server-PeekMessage
|
||||
@@ -2194,6 +2198,18 @@ if test "$enable_ntdll_Manifest_Range" -eq 1; then
|
||||
patch_apply ntdll-Manifest_Range/0001-ntdll-Support-ISOLATIONAWARE_MANIFEST_RESOURCE_ID-ra.patch
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtDevicePath
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#37487] Resolve \\SystemRoot\\ prefix when opening files
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ntdll/tests/file.c, dlls/ntdll/unix/file.c
|
||||
# |
|
||||
if test "$enable_ntdll_NtDevicePath" -eq 1; then
|
||||
patch_apply ntdll-NtDevicePath/0001-ntdll-Implement-opening-files-through-nt-device-path.patch
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtQuerySection
|
||||
# |
|
||||
# | Modified files:
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From aaf6709946884d010891d213b4a7f3f4b22f4ee5 Mon Sep 17 00:00:00 2001
|
||||
From ce8d669795e7c7fc81189c534e16fd58c501e577 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Wed, 24 Mar 2021 23:29:28 +0100
|
||||
Subject: [PATCH] user32: Set SEND_HWMSG_RAWINPUT flags only when RAWINPUT is
|
||||
@@ -20,7 +20,7 @@ __wine_send_input with INPUT_HARDWARE input type and a rawinput.
|
||||
9 files changed, 26 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index bc451cdd5d6..4f62fff1b83 100644
|
||||
index 2ac23ba999c..2db536fc48e 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -131,6 +131,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size )
|
||||
@@ -41,10 +41,10 @@ index bc451cdd5d6..4f62fff1b83 100644
|
||||
case INPUT_HARDWARE:
|
||||
RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED );
|
||||
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c
|
||||
index 0c6e2f262ff..921472646af 100644
|
||||
index 62bd20c42aa..3e35d278fab 100644
|
||||
--- a/dlls/win32u/message.c
|
||||
+++ b/dlls/win32u/message.c
|
||||
@@ -2605,7 +2605,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r
|
||||
@@ -2611,7 +2611,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r
|
||||
req->input.mouse.flags = input->mi.dwFlags;
|
||||
req->input.mouse.time = input->mi.time;
|
||||
req->input.mouse.info = input->mi.dwExtraInfo;
|
||||
@@ -53,7 +53,7 @@ index 0c6e2f262ff..921472646af 100644
|
||||
break;
|
||||
case INPUT_KEYBOARD:
|
||||
req->input.kbd.vkey = input->ki.wVk;
|
||||
@@ -2613,7 +2613,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r
|
||||
@@ -2619,7 +2619,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r
|
||||
req->input.kbd.flags = input->ki.dwFlags;
|
||||
req->input.kbd.time = input->ki.time;
|
||||
req->input.kbd.info = input->ki.dwExtraInfo;
|
||||
@@ -147,18 +147,18 @@ index 19a974b3c24..d5c5689d396 100644
|
||||
}
|
||||
}
|
||||
diff --git a/dlls/winemac.drv/keyboard.c b/dlls/winemac.drv/keyboard.c
|
||||
index b43ea0b5dc7..539502d79d9 100644
|
||||
index 76c038caf02..9e415bd70e3 100644
|
||||
--- a/dlls/winemac.drv/keyboard.c
|
||||
+++ b/dlls/winemac.drv/keyboard.c
|
||||
@@ -990,6 +990,7 @@ void macdrv_compute_keyboard_layout(struct macdrv_thread_data *thread_data)
|
||||
*/
|
||||
static void macdrv_send_keyboard_input(HWND hwnd, WORD vkey, WORD scan, DWORD flags, DWORD time)
|
||||
static void macdrv_send_keyboard_input(HWND hwnd, WORD vkey, WORD scan, unsigned int flags, unsigned int time)
|
||||
{
|
||||
+ RAWINPUT rawinput;
|
||||
INPUT input;
|
||||
|
||||
TRACE_(key)("hwnd %p vkey=%04x scan=%04x flags=%04x\n", hwnd, vkey, scan, flags);
|
||||
@@ -1001,7 +1002,7 @@ static void macdrv_send_keyboard_input(HWND hwnd, WORD vkey, WORD scan, DWORD fl
|
||||
@@ -1001,7 +1002,7 @@ static void macdrv_send_keyboard_input(HWND hwnd, WORD vkey, WORD scan, unsigned
|
||||
input.ki.time = time;
|
||||
input.ki.dwExtraInfo = 0;
|
||||
|
||||
@@ -168,7 +168,7 @@ index b43ea0b5dc7..539502d79d9 100644
|
||||
|
||||
|
||||
diff --git a/dlls/winemac.drv/mouse.c b/dlls/winemac.drv/mouse.c
|
||||
index 6dd90978a93..0479bc78c2b 100644
|
||||
index cb194095d55..74c329488c4 100644
|
||||
--- a/dlls/winemac.drv/mouse.c
|
||||
+++ b/dlls/winemac.drv/mouse.c
|
||||
@@ -129,6 +129,7 @@ static const CFStringRef cocoa_cursor_names[] =
|
||||
@@ -274,5 +274,5 @@ index 82a82032957..17e88f87982 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.38.1
|
||||
2.39.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From f678ed41b4306e31b6a95282710c2bf3a5abb1be Mon Sep 17 00:00:00 2001
|
||||
From 2f009b87fbb30774851f31d537b921bf90d50e1f Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Wed, 10 Feb 2016 15:09:29 +0800
|
||||
Subject: [PATCH] winex11.drv: Add support for _NET_ACTIVE_WINDOW. (v2)
|
||||
@@ -8,13 +8,14 @@ And use it as a backend in user32.SetActiveWindow().
|
||||
For bug #2155.
|
||||
---
|
||||
dlls/win32u/driver.c | 6 +++++
|
||||
dlls/win32u/input.c | 2 ++
|
||||
dlls/winex11.drv/event.c | 5 ++++
|
||||
dlls/winex11.drv/init.c | 1 +
|
||||
dlls/winex11.drv/window.c | 48 ++++++++++++++++++++++++++++++++++
|
||||
dlls/winex11.drv/x11drv.h | 3 +++
|
||||
dlls/winex11.drv/x11drv_main.c | 1 +
|
||||
include/wine/gdi_driver.h | 1 +
|
||||
7 files changed, 65 insertions(+)
|
||||
8 files changed, 67 insertions(+)
|
||||
|
||||
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
|
||||
index 557d555d673..c8077a73e32 100644
|
||||
@@ -47,6 +48,19 @@ index 557d555d673..c8077a73e32 100644
|
||||
SET_USER_FUNC(SetCapture);
|
||||
SET_USER_FUNC(SetFocus);
|
||||
SET_USER_FUNC(SetLayeredWindowAttributes);
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index fd16d03f733..8fcf1a2fb7e 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -1635,6 +1635,8 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
|
||||
}
|
||||
|
||||
+ user_driver->pSetActiveWindow( hwnd );
|
||||
+
|
||||
/* now change focus if necessary */
|
||||
if (focus)
|
||||
{
|
||||
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
|
||||
index 86edf66b820..f2b965706f4 100644
|
||||
--- a/dlls/winex11.drv/event.c
|
||||
@@ -71,10 +85,10 @@ index 86edf66b820..f2b965706f4 100644
|
||||
Foreground window, because in most cases the messages sent
|
||||
above must have already changed the foreground window, in which
|
||||
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
|
||||
index ba9aff82a06..0b80a660e9a 100644
|
||||
index 4ebe3a16367..1afadf626a9 100644
|
||||
--- a/dlls/winex11.drv/init.c
|
||||
+++ b/dlls/winex11.drv/init.c
|
||||
@@ -418,6 +418,7 @@ static const struct user_driver_funcs x11drv_funcs =
|
||||
@@ -415,6 +415,7 @@ static const struct user_driver_funcs x11drv_funcs =
|
||||
.pMsgWaitForMultipleObjectsEx = X11DRV_MsgWaitForMultipleObjectsEx,
|
||||
.pReleaseDC = X11DRV_ReleaseDC,
|
||||
.pScrollDC = X11DRV_ScrollDC,
|
||||
@@ -142,7 +156,7 @@ index 603314ff3bb..49ee4b75052 100644
|
||||
* SetCapture (X11DRV.@)
|
||||
*/
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index cd5f203c377..5e9ae21ab0d 100644
|
||||
index b394795a326..8da45e70179 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -227,6 +227,7 @@ extern void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect,
|
||||
@@ -153,7 +167,7 @@ index cd5f203c377..5e9ae21ab0d 100644
|
||||
extern void X11DRV_SetCapture( HWND hwnd, UINT flags ) DECLSPEC_HIDDEN;
|
||||
extern void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha,
|
||||
DWORD flags ) DECLSPEC_HIDDEN;
|
||||
@@ -377,6 +378,7 @@ struct x11drv_thread_data
|
||||
@@ -376,6 +377,7 @@ struct x11drv_thread_data
|
||||
Display *display;
|
||||
XEvent *current_event; /* event currently being processed */
|
||||
HWND grab_hwnd; /* window that currently grabs the mouse */
|
||||
@@ -161,7 +175,7 @@ index cd5f203c377..5e9ae21ab0d 100644
|
||||
HWND last_focus; /* last window that had focus */
|
||||
XIM xim; /* input method */
|
||||
HWND last_xic_hwnd; /* last xic window */
|
||||
@@ -485,6 +487,7 @@ enum x11drv_atoms
|
||||
@@ -484,6 +486,7 @@ enum x11drv_atoms
|
||||
XATOM__ICC_PROFILE,
|
||||
XATOM__KDE_NET_WM_STATE_SKIP_SWITCHER,
|
||||
XATOM__MOTIF_WM_HINTS,
|
||||
@@ -194,5 +208,5 @@ index d074c09cceb..d45a894adf2 100644
|
||||
void (*pSetFocus)(HWND);
|
||||
void (*pSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD);
|
||||
--
|
||||
2.38.1
|
||||
2.39.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 49cc6f9c79195d243f0e8d035267d9734708e5a5 Mon Sep 17 00:00:00 2001
|
||||
From 7f524fa9868f4707d6c30af6692283dfc18e647e Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Wed, 6 Apr 2016 15:14:25 +0800
|
||||
Subject: [PATCH] user32: Before asking a WM to activate a window make sure
|
||||
@@ -10,10 +10,10 @@ This patch fixes iconify action using WM's taskbar buttons for Winamp.
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index ade8c313423..dda2a750275 100644
|
||||
index 8fcf1a2fb7e..ad7afdfcc68 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -1377,6 +1377,10 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
@@ -1633,6 +1633,10 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
|
||||
(LPARAM)previous );
|
||||
if (NtUserGetAncestor( hwnd, GA_PARENT ) == get_desktop_window())
|
||||
NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd );
|
||||
@@ -23,7 +23,7 @@ index ade8c313423..dda2a750275 100644
|
||||
+
|
||||
}
|
||||
|
||||
/* now change focus if necessary */
|
||||
user_driver->pSetActiveWindow( hwnd );
|
||||
--
|
||||
2.35.1
|
||||
2.39.0
|
||||
|
||||
|
@@ -1,2 +1,2 @@
|
||||
Wine Staging 8.0-rc1
|
||||
Wine Staging 8.0-rc3
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
772badd0d7f3286a7881a71f16fad417e2d7787d
|
||||
9e33e4f4a26091fc02106a1cd874f77098b99883
|
||||
|
Reference in New Issue
Block a user