mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Rebase against 1a7b256f7c69c50c2a216317e03f9caeb268d0af.
This commit is contained in:
parent
22ed5ee061
commit
5087d8a8d9
@ -1,4 +1,4 @@
|
||||
From 95aeebee8fa45177e8b721aca8528d7b89c19054 Mon Sep 17 00:00:00 2001
|
||||
From c37ee83fb56f540a9fcb04c800ca3a6e94295e29 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 4 Feb 2017 16:20:37 +0100
|
||||
Subject: [PATCH] kernel32: Implement some processor group functions.
|
||||
@ -38,7 +38,7 @@ index 4998af04d9b..5ce8e24713b 100644
|
||||
@ stdcall GetNamedPipeServerProcessId(long ptr) kernel32.GetNamedPipeServerProcessId
|
||||
@ stdcall GetNumaAvailableMemoryNodeEx(long ptr) kernel32.GetNumaAvailableMemoryNodeEx
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index 5671ae7e93d..188c62636e6 100644
|
||||
index 4b09f359b97..c1bb03080c7 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -719,7 +719,7 @@
|
||||
@ -51,10 +51,10 @@ index 5671ae7e93d..188c62636e6 100644
|
||||
@ stdcall -import GetModuleFileNameW(long ptr long)
|
||||
@ stdcall -import GetModuleHandleA(str)
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 0cf45faf0f3..afed492873c 100644
|
||||
index ff4e79ff2b7..c0d1d8b9294 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -726,7 +726,9 @@ HRESULT WINAPI RegisterApplicationRecoveryCallback(APPLICATION_RECOVERY_CALLBACK
|
||||
@@ -624,7 +624,9 @@ HRESULT WINAPI RegisterApplicationRecoveryCallback(APPLICATION_RECOVERY_CALLBACK
|
||||
*/
|
||||
WORD WINAPI GetActiveProcessorGroupCount(void)
|
||||
{
|
||||
@ -65,7 +65,7 @@ index 0cf45faf0f3..afed492873c 100644
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -735,10 +737,14 @@ WORD WINAPI GetActiveProcessorGroupCount(void)
|
||||
@@ -633,10 +635,14 @@ WORD WINAPI GetActiveProcessorGroupCount(void)
|
||||
*/
|
||||
DWORD WINAPI GetActiveProcessorCount(WORD group)
|
||||
{
|
||||
@ -83,7 +83,7 @@ index 0cf45faf0f3..afed492873c 100644
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -752,6 +758,18 @@ DWORD WINAPI GetMaximumProcessorCount(WORD group)
|
||||
@@ -650,6 +656,18 @@ DWORD WINAPI GetMaximumProcessorCount(WORD group)
|
||||
return cpus;
|
||||
}
|
||||
|
||||
@ -103,10 +103,10 @@ index 0cf45faf0f3..afed492873c 100644
|
||||
* GetFirmwareEnvironmentVariableA (KERNEL32.@)
|
||||
*/
|
||||
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
|
||||
index 5bd7b71d63e..58ccbfbdacc 100644
|
||||
index 109322d6844..bdcbd4329b8 100644
|
||||
--- a/dlls/kernel32/tests/process.c
|
||||
+++ b/dlls/kernel32/tests/process.c
|
||||
@@ -93,6 +93,7 @@ static SIZE_T (WINAPI *pGetLargePageMinimum)(void);
|
||||
@@ -90,6 +90,7 @@ static SIZE_T (WINAPI *pGetLargePageMinimum)(void);
|
||||
static BOOL (WINAPI *pInitializeProcThreadAttributeList)(struct _PROC_THREAD_ATTRIBUTE_LIST*, DWORD, DWORD, SIZE_T*);
|
||||
static BOOL (WINAPI *pUpdateProcThreadAttribute)(struct _PROC_THREAD_ATTRIBUTE_LIST*, DWORD, DWORD_PTR, void *,SIZE_T,void*,SIZE_T*);
|
||||
static void (WINAPI *pDeleteProcThreadAttributeList)(struct _PROC_THREAD_ATTRIBUTE_LIST*);
|
||||
@ -114,7 +114,7 @@ index 5bd7b71d63e..58ccbfbdacc 100644
|
||||
|
||||
/* ############################### */
|
||||
static char base[MAX_PATH];
|
||||
@@ -276,6 +277,7 @@ static BOOL init(void)
|
||||
@@ -270,6 +271,7 @@ static BOOL init(void)
|
||||
pInitializeProcThreadAttributeList = (void *)GetProcAddress(hkernel32, "InitializeProcThreadAttributeList");
|
||||
pUpdateProcThreadAttribute = (void *)GetProcAddress(hkernel32, "UpdateProcThreadAttribute");
|
||||
pDeleteProcThreadAttributeList = (void *)GetProcAddress(hkernel32, "DeleteProcThreadAttributeList");
|
||||
@ -122,8 +122,8 @@ index 5bd7b71d63e..58ccbfbdacc 100644
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -4185,6 +4187,26 @@ void test_parent_process_attribute(unsigned int level, HANDLE read_pipe)
|
||||
}
|
||||
@@ -4139,6 +4141,26 @@ static void test_handle_list_attribute(BOOL child, HANDLE handle1, HANDLE handle
|
||||
CloseHandle(pipe[1]);
|
||||
}
|
||||
|
||||
+static void test_GetActiveProcessorCount(void)
|
||||
@ -148,8 +148,8 @@ index 5bd7b71d63e..58ccbfbdacc 100644
|
||||
+
|
||||
START_TEST(process)
|
||||
{
|
||||
HANDLE job;
|
||||
@@ -4296,6 +4318,7 @@ START_TEST(process)
|
||||
HANDLE job, hproc, h, h2;
|
||||
@@ -4254,6 +4276,7 @@ START_TEST(process)
|
||||
test_GetNumaProcessorNode();
|
||||
test_session_info();
|
||||
test_GetLogicalProcessorInformationEx();
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7595b344c4fc7d03f07a163b3f2f0b38123f7264 Mon Sep 17 00:00:00 2001
|
||||
From 5a1737e74415871fd5b0646ece31f191fa74bb69 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: Improve GetKeyboardLayoutList
|
||||
@ -6,15 +6,15 @@ Subject: [PATCH] user32: Improve GetKeyboardLayoutList
|
||||
This function returns the current list of *installed* Keyboard layouts
|
||||
not the complete list from the registry.
|
||||
---
|
||||
dlls/user32/driver.c | 27 ---------------------------
|
||||
dlls/user32/driver.c | 26 --------------------------
|
||||
dlls/user32/tests/input.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 35 insertions(+), 27 deletions(-)
|
||||
2 files changed, 35 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
|
||||
index 6d916c7d65d..b9e0dc60e7c 100644
|
||||
index 8ff6b0a817e..ddf00cfd7b5 100644
|
||||
--- a/dlls/user32/driver.c
|
||||
+++ b/dlls/user32/driver.c
|
||||
@@ -210,12 +210,9 @@ static void CDECL nulldrv_Beep(void)
|
||||
@@ -198,8 +198,6 @@ static void CDECL nulldrv_Beep(void)
|
||||
|
||||
static UINT CDECL nulldrv_GetKeyboardLayoutList( INT size, HKL *layouts )
|
||||
{
|
||||
@ -23,16 +23,12 @@ index 6d916c7d65d..b9e0dc60e7c 100644
|
||||
INT count = 0;
|
||||
ULONG_PTR baselayout;
|
||||
LANGID langid;
|
||||
- static const WCHAR szKeyboardReg[] = {'S','y','s','t','e','m','\\','C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\','C','o','n','t','r','o','l','\\','K','e','y','b','o','a','r','d',' ','L','a','y','o','u','t','s',0};
|
||||
|
||||
baselayout = GetUserDefaultLCID();
|
||||
langid = PRIMARYLANGID(LANGIDFROMLCID(baselayout));
|
||||
@@ -224,30 +221,6 @@ static UINT CDECL nulldrv_GetKeyboardLayoutList( INT size, HKL *layouts )
|
||||
@@ -211,30 +209,6 @@ static UINT CDECL nulldrv_GetKeyboardLayoutList( INT size, HKL *layouts )
|
||||
else
|
||||
baselayout |= baselayout << 16;
|
||||
|
||||
- /* Enumerate the Registry */
|
||||
- rc = RegOpenKeyW(HKEY_LOCAL_MACHINE,szKeyboardReg,&hKeyKeyboard);
|
||||
- rc = RegOpenKeyW(HKEY_LOCAL_MACHINE,L"System\\CurrentControlSet\\Control\\Keyboard Layouts",&hKeyKeyboard);
|
||||
- if (rc == ERROR_SUCCESS)
|
||||
- {
|
||||
- do {
|
||||
@ -41,7 +37,7 @@ index 6d916c7d65d..b9e0dc60e7c 100644
|
||||
- rc = RegEnumKeyW(hKeyKeyboard, count, szKeyName, 9);
|
||||
- if (rc == ERROR_SUCCESS)
|
||||
- {
|
||||
- layout = (HKL)(ULONG_PTR)strtoulW(szKeyName,NULL,16);
|
||||
- layout = (HKL)(ULONG_PTR)wcstoul(szKeyName,NULL,16);
|
||||
- if (baselayout != 0 && layout == (HKL)baselayout)
|
||||
- baselayout = 0; /* found in the registry do not add again */
|
||||
- if (size && layouts)
|
||||
@ -59,10 +55,10 @@ index 6d916c7d65d..b9e0dc60e7c 100644
|
||||
if (baselayout != 0)
|
||||
{
|
||||
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
|
||||
index bab0fd97536..ea0cac6d18a 100644
|
||||
index 1809c147cbd..fd8f26e9ee4 100644
|
||||
--- a/dlls/user32/tests/input.c
|
||||
+++ b/dlls/user32/tests/input.c
|
||||
@@ -3706,6 +3706,40 @@ static void test_UnregisterDeviceNotification(void)
|
||||
@@ -3791,6 +3791,40 @@ static void test_UnregisterDeviceNotification(void)
|
||||
ok(ret == FALSE, "Unregistering NULL Device Notification returned: %d\n", ret);
|
||||
}
|
||||
|
||||
@ -103,7 +99,7 @@ index bab0fd97536..ea0cac6d18a 100644
|
||||
START_TEST(input)
|
||||
{
|
||||
char **argv;
|
||||
@@ -3741,6 +3775,7 @@ START_TEST(input)
|
||||
@@ -3826,6 +3860,7 @@ START_TEST(input)
|
||||
test_GetRawInputBuffer();
|
||||
test_RegisterRawInputDevices();
|
||||
test_rawinput(argv[0]);
|
||||
@ -112,5 +108,5 @@ index bab0fd97536..ea0cac6d18a 100644
|
||||
if(pGetMouseMovePointsEx)
|
||||
test_GetMouseMovePointsEx();
|
||||
--
|
||||
2.27.0
|
||||
2.28.0
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
Fixes: [49692] mfplat: Improved support for multiple video formats.
|
||||
Disabled: true
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9e66f8a5f7579f0e7ef97ab4df66f91d8d8c0949 Mon Sep 17 00:00:00 2001
|
||||
From a1b46c58e7663a0c17d5dd2fbb3cc82fde40a06c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 1 Jun 2017 06:04:53 +0200
|
||||
Subject: [PATCH] ntdll: Fix holes in ELF mappings. (v2)
|
||||
@ -10,10 +10,10 @@ Based on a patch by Andrew Wesie.
|
||||
2 files changed, 36 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 253d5e31e3d..c518a4f8141 100644
|
||||
index 209a2647d16..2fbb5922359 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -1014,6 +1014,16 @@ static inline BOOL is_write_watch_range( const void *addr, size_t size )
|
||||
@@ -1021,6 +1021,16 @@ static inline BOOL is_write_watch_range( const void *addr, size_t size )
|
||||
}
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ index 253d5e31e3d..c518a4f8141 100644
|
||||
/***********************************************************************
|
||||
* find_view_range
|
||||
*
|
||||
@@ -2985,6 +2995,19 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -3051,6 +3061,19 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
/* ignore fault if page is writable now */
|
||||
if (get_unix_prot( get_page_vprot( page ) ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
}
|
||||
@ -47,7 +47,7 @@ index 253d5e31e3d..c518a4f8141 100644
|
||||
+ else
|
||||
+ set_page_vprot_bits( page, page_size, 0, VPROT_READ | VPROT_EXEC );
|
||||
+ }
|
||||
pthread_mutex_unlock( &virtual_mutex );
|
||||
mutex_unlock( &virtual_mutex );
|
||||
return ret;
|
||||
}
|
||||
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1703abc6afb86f5427ba73bcf6384bdea6d0eb69 Mon Sep 17 00:00:00 2001
|
||||
From 3ed31bd914d853f6e4b550db7ff0c68ab8918dad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 4 Oct 2014 02:53:22 +0200
|
||||
Subject: [PATCH] ntdll: Setup a temporary signal handler during process
|
||||
@ -15,10 +15,10 @@ Subject: [PATCH] ntdll: Setup a temporary signal handler during process
|
||||
7 files changed, 74 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 6f25f4ae87e..f9a26e6a531 100644
|
||||
index e7a7c96a974..0ffbab757a3 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1657,6 +1657,7 @@ void __wine_main( int argc, char *argv[], char *envp[] )
|
||||
@@ -1785,6 +1785,7 @@ void __wine_main( int argc, char *argv[], char *envp[] )
|
||||
#endif
|
||||
|
||||
virtual_init();
|
||||
@ -27,10 +27,10 @@ index 6f25f4ae87e..f9a26e6a531 100644
|
||||
|
||||
init_environment( argc, argv, envp );
|
||||
diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
|
||||
index 89baf6db3df..f5c683ec4e1 100644
|
||||
index e8971d22dbd..ca291456284 100644
|
||||
--- a/dlls/ntdll/unix/signal_arm.c
|
||||
+++ b/dlls/ntdll/unix/signal_arm.c
|
||||
@@ -979,6 +979,12 @@ void signal_init_process(void)
|
||||
@@ -977,6 +977,12 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -44,10 +44,10 @@ index 89baf6db3df..f5c683ec4e1 100644
|
||||
/***********************************************************************
|
||||
* init_thread_context
|
||||
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c
|
||||
index cfe1c75b59f..c599ce8d308 100644
|
||||
index e08d6a2ee17..025fa63316a 100644
|
||||
--- a/dlls/ntdll/unix/signal_arm64.c
|
||||
+++ b/dlls/ntdll/unix/signal_arm64.c
|
||||
@@ -1074,6 +1074,13 @@ void signal_init_process(void)
|
||||
@@ -1070,6 +1070,13 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -62,10 +62,10 @@ index cfe1c75b59f..c599ce8d308 100644
|
||||
* init_thread_context
|
||||
*/
|
||||
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
|
||||
index 5d4d1469472..73216888dd9 100644
|
||||
index e0ba27d3e94..dd9c8e255cc 100644
|
||||
--- a/dlls/ntdll/unix/signal_i386.c
|
||||
+++ b/dlls/ntdll/unix/signal_i386.c
|
||||
@@ -1809,6 +1809,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr,
|
||||
@@ -1865,6 +1865,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr,
|
||||
}
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ index 5d4d1469472..73216888dd9 100644
|
||||
/**********************************************************************
|
||||
* segv_handler
|
||||
*
|
||||
@@ -2368,6 +2392,34 @@ void signal_init_process(void)
|
||||
@@ -2424,6 +2448,34 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -132,10 +132,10 @@ index 5d4d1469472..73216888dd9 100644
|
||||
/***********************************************************************
|
||||
* init_thread_context
|
||||
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
|
||||
index c74b8be32b8..d28b7cce8ee 100644
|
||||
index e11b2c70b59..1b45ca246d3 100644
|
||||
--- a/dlls/ntdll/unix/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/unix/signal_x86_64.c
|
||||
@@ -2627,6 +2627,12 @@ void signal_init_process(void)
|
||||
@@ -2680,6 +2680,12 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -149,10 +149,10 @@ index c74b8be32b8..d28b7cce8ee 100644
|
||||
/***********************************************************************
|
||||
* init_thread_context
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index ce3c14d2594..44a2b5712f5 100644
|
||||
index 3d9dca3c51d..7b541dc6a31 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -217,6 +217,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
@@ -215,6 +215,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_init_process(void) DECLSPEC_HIDDEN;
|
||||
@ -161,12 +161,12 @@ index ce3c14d2594..44a2b5712f5 100644
|
||||
BOOL suspend, void *thunk, TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int) ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 58c84caab5f..ad2f959d61c 100644
|
||||
index 94b3975a964..cf0c1598720 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -2886,7 +2886,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -2967,7 +2967,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
|
||||
pthread_mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */
|
||||
mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */
|
||||
vprot = get_page_vprot( page );
|
||||
- if (!is_inside_signal_stack( stack ) && (vprot & VPROT_GUARD))
|
||||
+ if (stack && !is_inside_signal_stack( stack ) && (vprot & VPROT_GUARD))
|
||||
|
@ -1,4 +1,4 @@
|
||||
From c8020cc027be026da2aef0ed866a59629d4e053e Mon Sep 17 00:00:00 2001
|
||||
From 4a297f731112822e51086826f975bf5db9178e52 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 4 Oct 2014 03:22:09 +0200
|
||||
Subject: [PATCH] ntdll: Properly handle PAGE_WRITECOPY protection. (try 5)
|
||||
@ -9,10 +9,10 @@ For now, only enable it when a special environment variable is set.
|
||||
1 file changed, 39 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 563ed01deb5..79f6af38b00 100644
|
||||
index cf0c1598720..ff585c647bc 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -490,6 +490,21 @@ static void reserve_area( void *addr, void *end )
|
||||
@@ -495,6 +495,21 @@ static void reserve_area( void *addr, void *end )
|
||||
#endif /* __APPLE__ */
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ index 563ed01deb5..79f6af38b00 100644
|
||||
|
||||
static void mmap_init( const struct preload_info *preload_info )
|
||||
{
|
||||
@@ -847,8 +862,19 @@ static int get_unix_prot( BYTE vprot )
|
||||
@@ -852,8 +867,19 @@ static int get_unix_prot( BYTE vprot )
|
||||
{
|
||||
if (vprot & VPROT_READ) prot |= PROT_READ;
|
||||
if (vprot & VPROT_WRITE) prot |= PROT_WRITE | PROT_READ;
|
||||
@ -55,7 +55,7 @@ index 563ed01deb5..79f6af38b00 100644
|
||||
if (vprot & VPROT_WRITEWATCH) prot &= ~PROT_WRITE;
|
||||
}
|
||||
if (!prot) prot = PROT_NONE;
|
||||
@@ -1577,7 +1603,7 @@ static void update_write_watches( void *base, size_t size, size_t accessed_size
|
||||
@@ -1457,7 +1483,7 @@ static void update_write_watches( void *base, size_t size, size_t accessed_size
|
||||
{
|
||||
TRACE( "updating watch %p-%p-%p\n", base, (char *)base + accessed_size, (char *)base + size );
|
||||
/* clear write watch flag on accessed pages */
|
||||
@ -64,7 +64,7 @@ index 563ed01deb5..79f6af38b00 100644
|
||||
/* restore page protections on the entire range */
|
||||
mprotect_range( base, size, 0, 0 );
|
||||
}
|
||||
@@ -2919,12 +2945,13 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -2985,12 +3011,13 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
set_page_vprot_bits( page, page_size, 0, VPROT_WRITEWATCH );
|
||||
mprotect_range( page, page_size, 0, 0 );
|
||||
}
|
||||
@ -80,9 +80,9 @@ index 563ed01deb5..79f6af38b00 100644
|
||||
+ /* ignore fault if page is writable now */
|
||||
+ if (get_unix_prot( get_page_vprot( page ) ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
}
|
||||
pthread_mutex_unlock( &virtual_mutex );
|
||||
mutex_unlock( &virtual_mutex );
|
||||
return ret;
|
||||
@@ -3001,11 +3028,16 @@ static NTSTATUS check_write_access( void *base, size_t size, BOOL *has_write_wat
|
||||
@@ -3067,11 +3094,16 @@ static NTSTATUS check_write_access( void *base, size_t size, BOOL *has_write_wat
|
||||
{
|
||||
BYTE vprot = get_page_vprot( addr + i );
|
||||
if (vprot & VPROT_WRITEWATCH) *has_write_watch = TRUE;
|
||||
|
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "36e6ea9767473204b0e1635a1d54af3868fa0188"
|
||||
echo "0a49202109e29bd18daaf746cb9493e385511e13"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -147,7 +147,6 @@ patch_enable_all ()
|
||||
enable_krnl386_exe16_GDT_LDT_Emulation="$1"
|
||||
enable_krnl386_exe16_Invalid_Console_Handles="$1"
|
||||
enable_loader_KeyboardLayouts="$1"
|
||||
enable_mfplat_streaming_support="$1"
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$1"
|
||||
enable_mountmgr_DosDevices="$1"
|
||||
enable_mscoree_CorValidateImage="$1"
|
||||
@ -328,7 +327,6 @@ patch_enable_all ()
|
||||
enable_wpcap_Dynamic_Linking="$1"
|
||||
enable_ws2_32_APC_Performance="$1"
|
||||
enable_ws2_32_Connect_Time="$1"
|
||||
enable_ws2_32_TransmitFile="$1"
|
||||
enable_ws2_32_getaddrinfo="$1"
|
||||
enable_ws2_32_getsockopt="$1"
|
||||
enable_wtsapi32_EnumerateProcesses="$1"
|
||||
@ -535,9 +533,6 @@ patch_enable ()
|
||||
loader-KeyboardLayouts)
|
||||
enable_loader_KeyboardLayouts="$2"
|
||||
;;
|
||||
mfplat-streaming-support)
|
||||
enable_mfplat_streaming_support="$2"
|
||||
;;
|
||||
mmsystem.dll16-MIDIHDR_Refcount)
|
||||
enable_mmsystem_dll16_MIDIHDR_Refcount="$2"
|
||||
;;
|
||||
@ -1078,9 +1073,6 @@ patch_enable ()
|
||||
ws2_32-Connect_Time)
|
||||
enable_ws2_32_Connect_Time="$2"
|
||||
;;
|
||||
ws2_32-TransmitFile)
|
||||
enable_ws2_32_TransmitFile="$2"
|
||||
;;
|
||||
ws2_32-getaddrinfo)
|
||||
enable_ws2_32_getaddrinfo="$2"
|
||||
;;
|
||||
@ -2725,78 +2717,6 @@ if test "$enable_loader_KeyboardLayouts" -eq 1; then
|
||||
patch_apply loader-KeyboardLayouts/0002-user32-Improve-GetKeyboardLayoutList.patch
|
||||
fi
|
||||
|
||||
# Patchset mfplat-streaming-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#49692] mfplat: Improved support for multiple video formats.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/mf/Makefile.in, dlls/mf/handler.c, dlls/mf/handler.h, dlls/mf/main.c, dlls/mf/sar.c,
|
||||
# | dlls/mf/session.c, dlls/mf/tests/mf.c, dlls/mf/topology.c, dlls/mfplat/mediatype.c, dlls/mfplat/tests/mfplat.c,
|
||||
# | dlls/mfplat/tests/test.mp4, dlls/mfreadwrite/reader.c, dlls/mfreadwrite/tests/mfplat.c,
|
||||
# | dlls/mfreadwrite/tests/resource.rc, dlls/mfreadwrite/tests/test.mp4, dlls/winegstreamer/Makefile.in,
|
||||
# | dlls/winegstreamer/audioconvert.c, dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/gst_cbs.c,
|
||||
# | dlls/winegstreamer/gst_cbs.h, dlls/winegstreamer/gst_private.h, dlls/winegstreamer/main.c,
|
||||
# | dlls/winegstreamer/media_source.c, dlls/winegstreamer/mf_decode.c, dlls/winegstreamer/mfplat.c,
|
||||
# | dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, tools/make_makefiles, tools/makedep.c
|
||||
# |
|
||||
if test "$enable_mfplat_streaming_support" -eq 1; then
|
||||
patch_apply mfplat-streaming-support/0001-winegstreamer-Add-a-GstPad-wrapping-the-media-source.patch
|
||||
patch_apply mfplat-streaming-support/0002-winegstreamer-Use-decodebin-to-initialize-media-stre.patch
|
||||
patch_apply mfplat-streaming-support/0003-winegstreamer-Implement-IMFMediaStream-GetStreamDesc.patch
|
||||
patch_apply mfplat-streaming-support/0004-winegstreamer-Insert-parser-into-pipeline-to-rectify.patch
|
||||
patch_apply mfplat-streaming-support/0005-winegstreamer-Insert-videoconvert-into-decoded-video.patch
|
||||
patch_apply mfplat-streaming-support/0006-winegstreamer-Insert-audioconvert-into-decoded-audio.patch
|
||||
patch_apply mfplat-streaming-support/0007-winegstreamer-Translate-H.264-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0008-winegstreamer-Translate-WMV-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0009-winegstreamer-Translate-AAC-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0010-winegstreamer-Translate-MPEG-4-Section-2-caps-to-att.patch
|
||||
patch_apply mfplat-streaming-support/0011-winegstreamer-Translate-WMA-caps-to-attributes.patch
|
||||
patch_apply mfplat-streaming-support/0012-winegstreamer-Implement-IMFMediaSource-CreatePresent.patch
|
||||
patch_apply mfplat-streaming-support/0013-winegstreamer-Introduce-IMFMediaType-GstCaps-convert.patch
|
||||
patch_apply mfplat-streaming-support/0014-winegstreamer-Translate-H.264-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0015-winegstreamer-Translate-WMV-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0016-winegstreamer-Translate-AAC-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0017-winegstreamer-Translate-MPEG-4-Section-2-attributes-.patch
|
||||
patch_apply mfplat-streaming-support/0018-winegstreamer-Translate-WMA-attributes-to-caps.patch
|
||||
patch_apply mfplat-streaming-support/0019-winegstreamer-Implement-IMFMediaSource-Start.patch
|
||||
patch_apply mfplat-streaming-support/0020-winegstreamer-Implement-IMFMediaStream-RequestSample.patch
|
||||
patch_apply mfplat-streaming-support/0021-winegstreamer-Implement-IMFMediaSource-GetCharacteri.patch
|
||||
patch_apply mfplat-streaming-support/0022-winegstreamer-Calculate-the-MF_PD_DURATION-of-the-me.patch
|
||||
patch_apply mfplat-streaming-support/0023-tools-Add-support-for-multiple-parent-directories.patch
|
||||
patch_apply mfplat-streaming-support/0024-mf-Introduce-handler-helper.patch
|
||||
patch_apply mfplat-streaming-support/0025-Introduce-IMFSample-GstBuffer-converter.patch
|
||||
patch_apply mfplat-streaming-support/0026-winegstreamer-Implement-decoder-MFT-on-gstreamer.patch
|
||||
patch_apply mfplat-streaming-support/0027-mfreadwrite-Select-all-streams-when-creating-a-sourc.patch
|
||||
patch_apply mfplat-streaming-support/0028-Miscellaneous.patch
|
||||
patch_apply mfplat-streaming-support/0029-WMV.patch
|
||||
patch_apply mfplat-streaming-support/0030-mf-Ask-for-more-samples-from-upstream-node-when-upon.patch
|
||||
patch_apply mfplat-streaming-support/0031-winegstreamer-Implement-IMFMedisStream-GetMediaSourc.patch
|
||||
patch_apply mfplat-streaming-support/0032-Expose-PCM-output-type-on-AAC-decoder.patch
|
||||
patch_apply mfplat-streaming-support/0033-mfplat-Add-I420-format-information.patch
|
||||
patch_apply mfplat-streaming-support/0034-winegstreamer-Implement-Color-Converter-MFT.patch
|
||||
patch_apply mfplat-streaming-support/0035-HACK-Set-BPS-to-16-for-output-template.patch
|
||||
patch_apply mfplat-streaming-support/0036-Improve-tests.patch
|
||||
patch_apply mfplat-streaming-support/0037-Revert-Improve-tests.patch
|
||||
patch_apply mfplat-streaming-support/0038-Report-streams-backwards-and-only-select-one-of-each.patch
|
||||
patch_apply mfplat-streaming-support/0039-winegstreamer-Implement-IMFMediaSource-Stop.patch
|
||||
patch_apply mfplat-streaming-support/0040-winegstreamer-Introduce-MPEG-4-Section-2-video-decod.patch
|
||||
patch_apply mfplat-streaming-support/0041-HACK-Switch-between-all-selection-streams-on-MF_SOUR.patch
|
||||
patch_apply mfplat-streaming-support/0042-winegstreamer-Introduce-WMA-audio-decoder.patch
|
||||
patch_apply mfplat-streaming-support/0043-Support-stereo-down-folding.patch
|
||||
patch_apply mfplat-streaming-support/0044-winegstreamer-Implement-MF_SD_LANGUAGE.patch
|
||||
patch_apply mfplat-streaming-support/0045-Revert-mf-topoloader-Add-a-structure-for-iterative-b.patch
|
||||
patch_apply mfplat-streaming-support/0046-Revert-mf-topoloader-Clone-source-nodes-as-a-first-l.patch
|
||||
patch_apply mfplat-streaming-support/0047-Revert-mf-topoloader-Switch-to-public-interface-for-.patch
|
||||
patch_apply mfplat-streaming-support/0048-mf-Partially-implement-the-topology-loader.patch
|
||||
patch_apply mfplat-streaming-support/0049-mf-Miscelaneous-fixes-to-topology-resolution.patch
|
||||
patch_apply mfplat-streaming-support/0050-Rewrite-branch-resolver.patch
|
||||
patch_apply mfplat-streaming-support/0051-mf-sar-Compare-against-native-media-type-in-IsMediaT.patch
|
||||
patch_apply mfplat-streaming-support/0052-winegstreamer-Implement-audio-conversion-MFT.patch
|
||||
patch_apply mfplat-streaming-support/0053-winegstreamer-Support-eAVEncH264VProfile_Constrained.patch
|
||||
patch_apply mfplat-streaming-support/0054-winegstreamer-Support-older-versions.patch
|
||||
fi
|
||||
|
||||
# Patchset mmsystem.dll16-MIDIHDR_Refcount
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -5096,16 +5016,6 @@ if test "$enable_ws2_32_Connect_Time" -eq 1; then
|
||||
patch_apply ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch
|
||||
fi
|
||||
|
||||
# Patchset ws2_32-TransmitFile
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock.h, server/protocol.def, server/sock.c
|
||||
# |
|
||||
if test "$enable_ws2_32_TransmitFile" -eq 1; then
|
||||
patch_apply ws2_32-TransmitFile/0001-ws2_32-Add-support-for-TF_DISCONNECT-to-TransmitFile.patch
|
||||
patch_apply ws2_32-TransmitFile/0002-ws2_32-Add-support-for-TF_REUSE_SOCKET-to-TransmitFi.patch
|
||||
fi
|
||||
|
||||
# Patchset ws2_32-getaddrinfo
|
||||
# |
|
||||
# | Modified files:
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 65b7fe29b00024cfe5d7d9277927b76f8c4c98d4 Mon Sep 17 00:00:00 2001
|
||||
From 31de811f968861971bb6e014286cd34fb6c2f4c8 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
|
||||
@ -11,7 +11,7 @@ Subject: [PATCH] ntdll: Mimic object type behavior for different windows
|
||||
3 files changed, 82 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
|
||||
index abc8a8eef1c..1aa69393c9d 100644
|
||||
index 58fd9482720..7deb0b156d8 100644
|
||||
--- a/dlls/ntdll/tests/om.c
|
||||
+++ b/dlls/ntdll/tests/om.c
|
||||
@@ -73,6 +73,7 @@ static NTSTATUS (WINAPI *pNtQuerySystemTime)( LARGE_INTEGER * );
|
||||
@ -22,7 +22,7 @@ index abc8a8eef1c..1aa69393c9d 100644
|
||||
|
||||
#define KEYEDEVENT_WAIT 0x0001
|
||||
#define KEYEDEVENT_WAKE 0x0002
|
||||
@@ -1510,13 +1511,31 @@ static void test_query_object(void)
|
||||
@@ -1508,13 +1509,31 @@ static void test_query_object(void)
|
||||
pNtClose(handle);
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ index abc8a8eef1c..1aa69393c9d 100644
|
||||
|
||||
buffer = HeapAlloc( GetProcessHeap(), 0, sizeof(OBJECT_TYPES_INFORMATION) );
|
||||
ok( buffer != NULL, "Failed to allocate memory\n" );
|
||||
@@ -1544,11 +1563,54 @@ static void test_query_object_types(void)
|
||||
@@ -1542,11 +1561,54 @@ static void test_query_object_types(void)
|
||||
ok( type->TypeName.Length == sizeof(typeW) && !strncmpW(typeW, type->TypeName.Buffer, 4),
|
||||
"Expected 'Type' as first type, got %s\n", wine_dbgstr_us(&type->TypeName) );
|
||||
}
|
||||
@ -110,7 +110,7 @@ index abc8a8eef1c..1aa69393c9d 100644
|
||||
}
|
||||
|
||||
static void test_type_mismatch(void)
|
||||
@@ -2140,6 +2202,7 @@ START_TEST(om)
|
||||
@@ -2138,6 +2200,7 @@ START_TEST(om)
|
||||
pRtlWaitOnAddress = (void *)GetProcAddress(hntdll, "RtlWaitOnAddress");
|
||||
pRtlWakeAddressAll = (void *)GetProcAddress(hntdll, "RtlWakeAddressAll");
|
||||
pRtlWakeAddressSingle = (void *)GetProcAddress(hntdll, "RtlWakeAddressSingle");
|
||||
@ -119,10 +119,10 @@ index abc8a8eef1c..1aa69393c9d 100644
|
||||
test_case_sensitive();
|
||||
test_namespace_pipe();
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 10aafef6b58..bd3e8e41267 100644
|
||||
index ece09c12f77..9a1659d2f66 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -7436,7 +7436,10 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas
|
||||
@@ -6591,7 +6591,10 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas
|
||||
}
|
||||
if (status == STATUS_SUCCESS)
|
||||
{
|
||||
@ -135,11 +135,11 @@ index 10aafef6b58..bd3e8e41267 100644
|
||||
}
|
||||
}
|
||||
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
|
||||
index 552752b15d0..70c1661f9bb 100644
|
||||
index 6c8e50fb88f..201e66d1759 100644
|
||||
--- a/dlls/ntdll/unix/system.c
|
||||
+++ b/dlls/ntdll/unix/system.c
|
||||
@@ -1984,6 +1984,18 @@ static void get_timezone_info( RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi )
|
||||
pthread_mutex_unlock( &tz_mutex );
|
||||
@@ -2035,6 +2035,18 @@ static void get_timezone_info( RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi )
|
||||
mutex_unlock( &tz_mutex );
|
||||
}
|
||||
|
||||
+static DWORD translate_object_index(DWORD index)
|
||||
@ -157,7 +157,7 @@ index 552752b15d0..70c1661f9bb 100644
|
||||
|
||||
/******************************************************************************
|
||||
* NtQuerySystemInformation (NTDLL.@)
|
||||
@@ -2384,7 +2396,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2435,7 +2447,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;
|
||||
@ -166,7 +166,7 @@ index 552752b15d0..70c1661f9bb 100644
|
||||
/* FIXME: Fill out HandleFlags, ObjectPointer */
|
||||
}
|
||||
}
|
||||
@@ -2437,7 +2449,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2488,7 +2500,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;
|
||||
@ -175,7 +175,7 @@ index 552752b15d0..70c1661f9bb 100644
|
||||
/* FIXME: Fill out remaining fields */
|
||||
}
|
||||
}
|
||||
@@ -2693,7 +2705,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
@@ -2724,7 +2736,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -184,5 +184,5 @@ index 552752b15d0..70c1661f9bb 100644
|
||||
* NtQuerySystemInformationEx (NTDLL.@)
|
||||
*/
|
||||
--
|
||||
2.27.0
|
||||
2.28.0
|
||||
|
||||
|
@ -1,219 +0,0 @@
|
||||
From 45e6befeba8145914fac0e1e9690026145e9ac25 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 17 Aug 2015 01:11:47 +0200
|
||||
Subject: [PATCH] server: Store a reference to the parent object for pipe
|
||||
servers. (v2)
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/om.c | 3 ---
|
||||
server/named_pipe.c | 44 ++++++++++++++++++++++++++++++++++++--------
|
||||
server/object.c | 22 ++++++++++++++--------
|
||||
server/object.h | 2 ++
|
||||
4 files changed, 52 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
|
||||
index be137b8..1c65464 100644
|
||||
--- a/dlls/ntdll/tests/om.c
|
||||
+++ b/dlls/ntdll/tests/om.c
|
||||
@@ -1503,14 +1503,11 @@ static void test_query_object(void)
|
||||
status = pNtQueryObject( handle, ObjectNameInformation, buffer, sizeof(buffer), &len );
|
||||
ok( status == STATUS_SUCCESS , "NtQueryObject returned %x\n", status );
|
||||
str = (UNICODE_STRING *)buffer;
|
||||
- todo_wine
|
||||
ok( len > sizeof(UNICODE_STRING), "unexpected len %u\n", len );
|
||||
str = (UNICODE_STRING *)buffer;
|
||||
expected_len = sizeof(UNICODE_STRING) + str->Length + sizeof(WCHAR);
|
||||
- todo_wine
|
||||
ok( len == expected_len || broken(len == expected_len - sizeof(WCHAR)), /* NT4 */
|
||||
"unexpected len %u\n", len );
|
||||
- todo_wine
|
||||
ok( len > sizeof(UNICODE_STRING) + sizeof("\\test_pipe") * sizeof(WCHAR),
|
||||
"name too short %s\n", wine_dbgstr_w(str->Buffer) );
|
||||
trace( "got %s len %u\n", wine_dbgstr_w(str->Buffer), len );
|
||||
diff --git a/server/named_pipe.c b/server/named_pipe.c
|
||||
index 141a052..62b6905 100644
|
||||
--- a/server/named_pipe.c
|
||||
+++ b/server/named_pipe.c
|
||||
@@ -159,6 +159,8 @@ static struct security_descriptor *pipe_server_get_sd( struct object *obj );
|
||||
static int pipe_server_set_sd( struct object *obj, const struct security_descriptor *sd,
|
||||
unsigned int set_info );
|
||||
static void pipe_server_destroy( struct object *obj);
|
||||
+static int pipe_server_link_name( struct object *obj, struct object_name *name, struct object *parent );
|
||||
+static void pipe_server_unlink_name( struct object *obj, struct object_name *name );
|
||||
static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
|
||||
static void pipe_server_get_file_info( struct fd *fd, unsigned int info_class );
|
||||
|
||||
@@ -177,8 +179,8 @@ static const struct object_ops pipe_server_ops =
|
||||
pipe_server_get_sd, /* get_sd */
|
||||
pipe_server_set_sd, /* set_sd */
|
||||
no_lookup_name, /* lookup_name */
|
||||
- no_link_name, /* link_name */
|
||||
- NULL, /* unlink_name */
|
||||
+ pipe_server_link_name, /* link_name */
|
||||
+ pipe_server_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_alloc_handle, /* alloc_handle */
|
||||
fd_close_handle, /* close_handle */
|
||||
@@ -205,6 +207,8 @@ static void pipe_client_dump( struct object *obj, int verbose );
|
||||
static struct security_descriptor *pipe_client_get_sd( struct object *obj );
|
||||
static int pipe_client_set_sd( struct object *obj, const struct security_descriptor *sd,
|
||||
unsigned int set_info );
|
||||
+static int pipe_client_link_name( struct object *obj, struct object_name *name, struct object *parent );
|
||||
+static void pipe_client_unlink_name( struct object *obj, struct object_name *name );
|
||||
static void pipe_client_destroy( struct object *obj );
|
||||
static int pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
|
||||
static void pipe_client_get_file_info( struct fd *fd, unsigned int info_class );
|
||||
@@ -224,8 +228,8 @@ static const struct object_ops pipe_client_ops =
|
||||
pipe_client_get_sd, /* get_sd */
|
||||
pipe_client_set_sd, /* set_sd */
|
||||
no_lookup_name, /* lookup_name */
|
||||
- no_link_name, /* link_name */
|
||||
- NULL, /* unlink_name */
|
||||
+ pipe_client_link_name, /* link_name */
|
||||
+ pipe_client_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
no_alloc_handle, /* alloc_handle */
|
||||
fd_close_handle, /* close_handle */
|
||||
@@ -422,6 +426,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end )
|
||||
if (pipe_end->fd) release_object( pipe_end->fd );
|
||||
}
|
||||
|
||||
+static int pipe_server_link_name( struct object *obj, struct object_name *name, struct object *parent )
|
||||
+{
|
||||
+ assert( parent->ops == &named_pipe_ops );
|
||||
+ name->parent = grab_object( parent );
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static void pipe_server_unlink_name( struct object *obj, struct object_name *name )
|
||||
+{
|
||||
+}
|
||||
+
|
||||
static void pipe_server_destroy( struct object *obj)
|
||||
{
|
||||
struct pipe_server *server = (struct pipe_server *)obj;
|
||||
@@ -444,6 +459,17 @@ static void pipe_server_destroy( struct object *obj)
|
||||
release_object( server->pipe );
|
||||
}
|
||||
|
||||
+static int pipe_client_link_name( struct object *obj, struct object_name *name, struct object *parent )
|
||||
+{
|
||||
+ assert( parent->ops == &named_pipe_ops );
|
||||
+ name->parent = grab_object( parent );
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static void pipe_client_unlink_name( struct object *obj, struct object_name *name )
|
||||
+{
|
||||
+}
|
||||
+
|
||||
static void pipe_client_destroy( struct object *obj)
|
||||
{
|
||||
struct pipe_client *client = (struct pipe_client *)obj;
|
||||
@@ -1109,9 +1135,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d
|
||||
static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options,
|
||||
unsigned int pipe_flags )
|
||||
{
|
||||
+ static const struct unicode_str str = { NULL, 0 };
|
||||
struct pipe_server *server;
|
||||
|
||||
- server = alloc_object( &pipe_server_ops );
|
||||
+ server = create_object( &pipe->obj, &pipe_server_ops, &str, NULL );
|
||||
if (!server)
|
||||
return NULL;
|
||||
|
||||
@@ -1135,12 +1162,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
|
||||
return server;
|
||||
}
|
||||
|
||||
-static struct pipe_client *create_pipe_client( unsigned int flags, unsigned int pipe_flags,
|
||||
+static struct pipe_client *create_pipe_client( struct named_pipe *pipe, unsigned int flags, unsigned int pipe_flags,
|
||||
data_size_t buffer_size, unsigned int options )
|
||||
{
|
||||
+ static const struct unicode_str str = { NULL, 0 };
|
||||
struct pipe_client *client;
|
||||
|
||||
- client = alloc_object( &pipe_client_ops );
|
||||
+ client = create_object( &pipe->obj, &pipe_client_ops, &str, NULL );
|
||||
if (!client)
|
||||
return NULL;
|
||||
|
||||
@@ -1220,7 +1248,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if ((client = create_pipe_client( options, pipe->flags, pipe->outsize, options )))
|
||||
+ if ((client = create_pipe_client( pipe, options, pipe->flags, pipe->outsize, options )))
|
||||
{
|
||||
if (server->state == ps_wait_open)
|
||||
fd_async_wake_up( server->pipe_end.fd, ASYNC_TYPE_WAIT, STATUS_SUCCESS );
|
||||
diff --git a/server/object.c b/server/object.c
|
||||
index d0750c5..f40aebe 100644
|
||||
--- a/server/object.c
|
||||
+++ b/server/object.c
|
||||
@@ -176,7 +176,7 @@ WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len )
|
||||
while (ptr && ptr->name)
|
||||
{
|
||||
struct object_name *name = ptr->name;
|
||||
- len += name->len + sizeof(WCHAR);
|
||||
+ if (name->len) len += name->len + sizeof(WCHAR);
|
||||
ptr = name->parent;
|
||||
}
|
||||
if (!len) return NULL;
|
||||
@@ -186,9 +186,12 @@ WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len )
|
||||
while (obj && obj->name)
|
||||
{
|
||||
struct object_name *name = obj->name;
|
||||
- memcpy( ret + len - name->len, name->name, name->len );
|
||||
- len -= name->len + sizeof(WCHAR);
|
||||
- memcpy( ret + len, &backslash, sizeof(WCHAR) );
|
||||
+ if (name->len)
|
||||
+ {
|
||||
+ memcpy( ret + len - name->len, name->name, name->len );
|
||||
+ len -= name->len + sizeof(WCHAR);
|
||||
+ memcpy( ret + len, &backslash, sizeof(WCHAR) );
|
||||
+ }
|
||||
obj = name->parent;
|
||||
}
|
||||
return (WCHAR *)ret;
|
||||
@@ -276,8 +279,8 @@ struct object *lookup_named_object( struct object *root, const struct unicode_st
|
||||
return parent;
|
||||
}
|
||||
|
||||
-static struct object *create_object( struct object *parent, const struct object_ops *ops,
|
||||
- const struct unicode_str *name, const struct security_descriptor *sd )
|
||||
+void *create_object( struct object *parent, const struct object_ops *ops,
|
||||
+ const struct unicode_str *name, const struct security_descriptor *sd )
|
||||
{
|
||||
struct object *obj;
|
||||
struct object_name *name_ptr;
|
||||
@@ -372,8 +375,11 @@ static void dump_name( struct object *obj )
|
||||
|
||||
if (!name) return;
|
||||
if (name->parent) dump_name( name->parent );
|
||||
- fputs( "\\\\", stderr );
|
||||
- dump_strW( name->name, name->len / sizeof(WCHAR), stderr, "[]" );
|
||||
+ if (name->len)
|
||||
+ {
|
||||
+ fputs( "\\\\", stderr );
|
||||
+ dump_strW( name->name, name->len / sizeof(WCHAR), stderr, "[]" );
|
||||
+ }
|
||||
}
|
||||
|
||||
/* dump the name of an object to stderr */
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index 9ff123e..4a5d282 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -135,6 +135,8 @@ extern WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len );
|
||||
extern void dump_object_name( struct object *obj );
|
||||
extern struct object *lookup_named_object( struct object *root, const struct unicode_str *name,
|
||||
unsigned int attr, struct unicode_str *name_left );
|
||||
+extern void *create_object( struct object *parent, const struct object_ops *ops,
|
||||
+ const struct unicode_str *name, const struct security_descriptor *sd );
|
||||
extern void *create_named_object( struct object *parent, const struct object_ops *ops,
|
||||
const struct unicode_str *name, unsigned int attributes,
|
||||
const struct security_descriptor *sd );
|
||||
--
|
||||
1.9.1
|
||||
|
@ -1,5 +0,0 @@
|
||||
Fixes: Report correct ObjectName for NamedPipe wineserver objects
|
||||
# This was originally written for msys2's strace.exe. It was broken by
|
||||
# 59dd8ba..6098af8. Since msys2 has been broken in Wine for a while now, this
|
||||
# really isn't worth fixing.
|
||||
Disabled: true
|
@ -1,19 +1,19 @@
|
||||
From d294da0642e0fafe103120915f835d529840d233 Mon Sep 17 00:00:00 2001
|
||||
From 2756f2f11aaa25a9d31eee8eae603f278bbc20f1 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 30 Mar 2015 12:32:34 +0200
|
||||
Subject: server: Add a helper function set_sd_from_token_internal to merge two
|
||||
security descriptors.
|
||||
Subject: [PATCH] server: Add a helper function set_sd_from_token_internal to
|
||||
merge two security descriptors.
|
||||
|
||||
---
|
||||
server/object.c | 59 ++++++++++++++++++++++++++++++++++++---------------------
|
||||
server/object.c | 59 +++++++++++++++++++++++++++++++------------------
|
||||
server/object.h | 3 +++
|
||||
2 files changed, 40 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/server/object.c b/server/object.c
|
||||
index 4455718aac..522035bcb8 100644
|
||||
index c4c62cb78ad..9342e94ae81 100644
|
||||
--- a/server/object.c
|
||||
+++ b/server/object.c
|
||||
@@ -535,8 +535,9 @@ struct security_descriptor *default_get_sd( struct object *obj )
|
||||
@@ -554,8 +554,9 @@ struct security_descriptor *default_get_sd( struct object *obj )
|
||||
return obj->sd;
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ index 4455718aac..522035bcb8 100644
|
||||
{
|
||||
struct security_descriptor new_sd, *new_sd_ptr;
|
||||
int present;
|
||||
@@ -545,8 +546,6 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -564,8 +565,6 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
ACL *replaced_sacl = NULL;
|
||||
char *ptr;
|
||||
|
||||
@ -34,7 +34,7 @@ index 4455718aac..522035bcb8 100644
|
||||
new_sd.control = sd->control & ~SE_SELF_RELATIVE;
|
||||
|
||||
if (set_info & OWNER_SECURITY_INFORMATION && sd->owner_len)
|
||||
@@ -554,10 +553,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -573,10 +572,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
owner = sd_get_owner( sd );
|
||||
new_sd.owner_len = sd->owner_len;
|
||||
}
|
||||
@ -48,7 +48,7 @@ index 4455718aac..522035bcb8 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -571,10 +570,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -590,10 +589,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
group = sd_get_group( sd );
|
||||
new_sd.group_len = sd->group_len;
|
||||
}
|
||||
@ -62,7 +62,7 @@ index 4455718aac..522035bcb8 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -592,20 +591,20 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -611,20 +610,20 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
else if (set_info & LABEL_SECURITY_INFORMATION && present)
|
||||
{
|
||||
const ACL *old_sacl = NULL;
|
||||
@ -88,7 +88,7 @@ index 4455718aac..522035bcb8 100644
|
||||
}
|
||||
else
|
||||
new_sd.sacl_len = 0;
|
||||
@@ -619,12 +618,12 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -638,12 +637,12 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -104,7 +104,7 @@ index 4455718aac..522035bcb8 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -640,7 +639,7 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -659,7 +658,7 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
if (!ptr)
|
||||
{
|
||||
free( replaced_sacl );
|
||||
@ -113,7 +113,7 @@ index 4455718aac..522035bcb8 100644
|
||||
}
|
||||
new_sd_ptr = (struct security_descriptor*)ptr;
|
||||
|
||||
@@ -655,9 +654,25 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -674,9 +673,25 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
memcpy( ptr, dacl, new_sd.dacl_len );
|
||||
|
||||
free( replaced_sacl );
|
||||
@ -143,10 +143,10 @@ index 4455718aac..522035bcb8 100644
|
||||
|
||||
/** Set the security descriptor using the current primary token for defaults. */
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index b5c50e1cee..cfbd5e06bc 100644
|
||||
index 53e37b61a21..8203889323a 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -156,6 +156,9 @@ extern struct fd *no_get_fd( struct object *obj );
|
||||
@@ -164,6 +164,9 @@ extern struct fd *no_get_fd( struct object *obj );
|
||||
extern unsigned int no_map_access( struct object *obj, unsigned int access );
|
||||
extern struct security_descriptor *default_get_sd( struct object *obj );
|
||||
extern int default_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info );
|
||||
@ -155,7 +155,7 @@ index b5c50e1cee..cfbd5e06bc 100644
|
||||
+ unsigned int set_info, struct token *token );
|
||||
extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd,
|
||||
unsigned int set_info, struct token *token );
|
||||
extern struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attributes );
|
||||
extern WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len );
|
||||
--
|
||||
2.13.1
|
||||
2.28.0
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
From 984661d3ad7f1a78cc5b69f81a45b949781ce791 Mon Sep 17 00:00:00 2001
|
||||
From 6e42e27181a16cc0b427e3504ec3ac8b7ab21f65 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 13 Nov 2014 06:43:43 +0100
|
||||
Subject: user32: Fix handling of invert_y in DrawTextExW.
|
||||
Subject: [PATCH] user32: Fix handling of invert_y in DrawTextExW.
|
||||
|
||||
---
|
||||
dlls/user32/text.c | 32 +++++++++++++++-----------------
|
||||
1 file changed, 15 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/text.c b/dlls/user32/text.c
|
||||
index 66a35d2..2aa127a 100644
|
||||
index dd9d711cd48..647fff30c30 100644
|
||||
--- a/dlls/user32/text.c
|
||||
+++ b/dlls/user32/text.c
|
||||
@@ -911,6 +911,15 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
@@ -909,6 +909,15 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
if (dtp && dtp->cbSize != sizeof(DRAWTEXTPARAMS))
|
||||
return 0;
|
||||
|
||||
@ -26,8 +26,8 @@ index 66a35d2..2aa127a 100644
|
||||
+
|
||||
if (count == -1)
|
||||
{
|
||||
count = strlenW(str);
|
||||
@@ -920,7 +929,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
count = lstrlenW(str);
|
||||
@@ -918,7 +927,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
{
|
||||
rect->right = rect->left;
|
||||
if( flags & DT_SINGLELINE)
|
||||
@ -36,7 +36,7 @@ index 66a35d2..2aa127a 100644
|
||||
else
|
||||
rect->bottom = rect->top;
|
||||
}
|
||||
@@ -928,15 +937,6 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
@@ -926,15 +935,6 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ index 66a35d2..2aa127a 100644
|
||||
if (dtp)
|
||||
{
|
||||
lmargin = dtp->iLeftMargin;
|
||||
@@ -983,9 +983,10 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
@@ -982,9 +982,10 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
|
||||
if (flags & DT_SINGLELINE)
|
||||
{
|
||||
@ -66,7 +66,7 @@ index 66a35d2..2aa127a 100644
|
||||
}
|
||||
|
||||
if (!(flags & DT_CALCRECT))
|
||||
@@ -1050,10 +1051,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
@@ -1042,10 +1043,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
|
||||
else if (size.cx > max_width)
|
||||
max_width = size.cx;
|
||||
|
||||
@ -79,5 +79,5 @@ index 66a35d2..2aa127a 100644
|
||||
dtp->uiLengthDrawn += len;
|
||||
}
|
||||
--
|
||||
2.1.3
|
||||
2.28.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f836f939423f02291ba1ee175542f195ec6eb182 Mon Sep 17 00:00:00 2001
|
||||
From 9b3b49acf05b15eb533beb846e920bfcbc49094c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Mon, 11 Nov 2019 18:35:18 +0100
|
||||
Subject: [PATCH] server: Add HID input message type to send_hardware_message
|
||||
@ -14,10 +14,10 @@ Subject: [PATCH] server: Add HID input message type to send_hardware_message
|
||||
6 files changed, 143 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
|
||||
index aadec28b559..a6e0b3cf94d 100644
|
||||
index 4434f4b0c2a..7ae865a135c 100644
|
||||
--- a/dlls/user32/message.c
|
||||
+++ b/dlls/user32/message.c
|
||||
@@ -3244,10 +3244,10 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3238,10 +3238,10 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
{
|
||||
req->win = wine_server_user_handle( hwnd );
|
||||
req->flags = flags;
|
||||
@ -29,7 +29,7 @@ index aadec28b559..a6e0b3cf94d 100644
|
||||
req->input.mouse.x = input->u.mi.dx;
|
||||
req->input.mouse.y = input->u.mi.dy;
|
||||
req->input.mouse.data = input->u.mi.mouseData;
|
||||
@@ -3256,6 +3256,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3250,6 +3250,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
req->input.mouse.info = input->u.mi.dwExtraInfo;
|
||||
break;
|
||||
case INPUT_KEYBOARD:
|
||||
@ -37,7 +37,7 @@ index aadec28b559..a6e0b3cf94d 100644
|
||||
req->input.kbd.vkey = input->u.ki.wVk;
|
||||
req->input.kbd.scan = input->u.ki.wScan;
|
||||
req->input.kbd.flags = input->u.ki.dwFlags;
|
||||
@@ -3263,6 +3264,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3257,6 +3258,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
req->input.kbd.info = input->u.ki.dwExtraInfo;
|
||||
break;
|
||||
case INPUT_HARDWARE:
|
||||
@ -46,10 +46,10 @@ index aadec28b559..a6e0b3cf94d 100644
|
||||
req->input.hw.lparam = MAKELONG( input->u.hi.wParamL, input->u.hi.wParamH );
|
||||
break;
|
||||
diff --git a/dlls/user32/rawinput.c b/dlls/user32/rawinput.c
|
||||
index bcdb70bdb81..4914c67c98b 100644
|
||||
index ba11a121bc5..a6327b06422 100644
|
||||
--- a/dlls/user32/rawinput.c
|
||||
+++ b/dlls/user32/rawinput.c
|
||||
@@ -47,6 +47,7 @@ struct device
|
||||
@@ -46,6 +46,7 @@ struct device
|
||||
{
|
||||
WCHAR *path;
|
||||
HANDLE file;
|
||||
@ -57,7 +57,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
RID_DEVICE_INFO info;
|
||||
PHIDP_PREPARSED_DATA data;
|
||||
};
|
||||
@@ -63,6 +64,8 @@ static CRITICAL_SECTION_DEBUG rawinput_devices_cs_debug =
|
||||
@@ -62,6 +63,8 @@ static CRITICAL_SECTION_DEBUG rawinput_devices_cs_debug =
|
||||
};
|
||||
static CRITICAL_SECTION rawinput_devices_cs = { &rawinput_devices_cs_debug, -1, 0, 0, 0, 0 };
|
||||
|
||||
@ -66,7 +66,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
static BOOL array_reserve(void **elements, unsigned int *capacity, unsigned int count, unsigned int size)
|
||||
{
|
||||
unsigned int new_capacity, max_capacity;
|
||||
@@ -144,10 +147,43 @@ static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
|
||||
@@ -143,10 +146,43 @@ static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
|
||||
device->path = path;
|
||||
device->file = file;
|
||||
device->info.cbSize = sizeof(RID_DEVICE_INFO);
|
||||
@ -97,7 +97,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
+
|
||||
+ for (i = 0; i < rawinput_devices_count; ++i)
|
||||
+ {
|
||||
+ if (strcmpW(rawinput_devices[i].path, info->Name.Buffer) == 0)
|
||||
+ if (!wcscmp(rawinput_devices[i].path, info->Name.Buffer))
|
||||
+ {
|
||||
+ rawinput_devices[i].handle = device;
|
||||
+ return &rawinput_devices[i];
|
||||
@ -110,7 +110,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
static void find_devices(void)
|
||||
{
|
||||
static ULONGLONG last_check;
|
||||
@@ -327,6 +363,22 @@ BOOL rawinput_from_hardware_message(RAWINPUT *rawinput, const struct hardware_ms
|
||||
@@ -326,6 +362,22 @@ BOOL rawinput_from_hardware_message(RAWINPUT *rawinput, const struct hardware_ms
|
||||
rawinput->data.keyboard.Message = msg_data->rawinput.kbd.message;
|
||||
rawinput->data.keyboard.ExtraInformation = msg_data->info;
|
||||
}
|
||||
@ -133,7 +133,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
else
|
||||
{
|
||||
FIXME("Unhandled rawinput type %#x.\n", msg_data->rawinput.type);
|
||||
@@ -525,7 +577,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetRawInputBuffer(RAWINPUT *data, UINT *data_size,
|
||||
@@ -524,7 +576,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetRawInputBuffer(RAWINPUT *data, UINT *data_size,
|
||||
struct hardware_msg_data *msg_data;
|
||||
struct rawinput_thread_data *thread_data;
|
||||
RAWINPUT *rawinput;
|
||||
@ -142,7 +142,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
BOOL is_wow64;
|
||||
int i;
|
||||
|
||||
@@ -585,7 +637,10 @@ UINT WINAPI DECLSPEC_HOTPATCH GetRawInputBuffer(RAWINPUT *data, UINT *data_size,
|
||||
@@ -584,7 +636,10 @@ UINT WINAPI DECLSPEC_HOTPATCH GetRawInputBuffer(RAWINPUT *data, UINT *data_size,
|
||||
data->header.dwSize - sizeof(RAWINPUTHEADER));
|
||||
data->header.dwSize += overhead;
|
||||
data = NEXTRAWINPUTBLOCK(data);
|
||||
@ -154,7 +154,7 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
}
|
||||
|
||||
if (count == 0 && next_size == 0) *data_size = 0;
|
||||
@@ -660,6 +715,7 @@ UINT WINAPI GetRawInputDeviceInfoW(HANDLE handle, UINT command, void *data, UINT
|
||||
@@ -657,6 +712,7 @@ UINT WINAPI GetRawInputDeviceInfoW(HANDLE handle, UINT command, void *data, UINT
|
||||
handle, command, data, data_size);
|
||||
|
||||
if (!data_size) return ~0U;
|
||||
@ -163,10 +163,10 @@ index bcdb70bdb81..4914c67c98b 100644
|
||||
/* each case below must set:
|
||||
* *data_size: length (meaning defined by command) of data we want to copy
|
||||
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
|
||||
index 8fa54b9229a..460f3aa1c3e 100644
|
||||
index 7761a1ceb4f..bf13e81762a 100644
|
||||
--- a/dlls/user32/user_private.h
|
||||
+++ b/dlls/user32/user_private.h
|
||||
@@ -386,4 +386,6 @@ static inline WCHAR *heap_strdupW(const WCHAR *src)
|
||||
@@ -391,4 +391,6 @@ static inline WCHAR *heap_strdupW(const WCHAR *src)
|
||||
return dst;
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ index 8fa54b9229a..460f3aa1c3e 100644
|
||||
+
|
||||
#endif /* __WINE_USER_PRIVATE_H */
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 521e2a78fa9..651e6423e82 100644
|
||||
index 5aed1d19b8e..2efaa3336e4 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -312,6 +312,13 @@ struct hardware_msg_data
|
||||
@ -234,7 +234,7 @@ index 521e2a78fa9..651e6423e82 100644
|
||||
|
||||
typedef union
|
||||
{
|
||||
@@ -2301,6 +2320,7 @@ enum message_type
|
||||
@@ -2048,6 +2067,7 @@ enum message_type
|
||||
user_handle_t win; /* window handle */
|
||||
hw_input_t input; /* input data */
|
||||
unsigned int flags; /* flags (see below) */
|
||||
@ -243,10 +243,10 @@ index 521e2a78fa9..651e6423e82 100644
|
||||
int wait; /* do we need to wait for a reply? */
|
||||
int prev_x; /* previous cursor position */
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 3ad376b776b..baf19fa17a6 100644
|
||||
index 1cdecd9ef26..43e488eac70 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -1588,7 +1588,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
@@ -1590,7 +1590,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
struct msg_queue *queue;
|
||||
struct message *msg;
|
||||
timeout_t timeout = 2000 * -10000; /* FIXME: load from registry */
|
||||
@ -255,7 +255,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
|
||||
if (!(hook_thread = get_first_global_hook( id ))) return 0;
|
||||
if (!(queue = hook_thread->queue)) return 0;
|
||||
@@ -1606,7 +1606,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
@@ -1608,7 +1608,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
msg->data_size = hardware_msg->data_size;
|
||||
msg->result = NULL;
|
||||
|
||||
@ -264,7 +264,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
{
|
||||
unsigned short vkey = input->kbd.vkey;
|
||||
if (input->kbd.flags & KEYEVENTF_UNICODE) vkey = VK_PACKET;
|
||||
@@ -1642,6 +1642,8 @@ struct rawinput_message
|
||||
@@ -1644,6 +1644,8 @@ struct rawinput_message
|
||||
struct desktop *desktop;
|
||||
struct hw_msg_source source;
|
||||
unsigned int time;
|
||||
@ -273,7 +273,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
struct hardware_msg_data data;
|
||||
const void *extra;
|
||||
data_size_t extra_len;
|
||||
@@ -1651,6 +1653,7 @@ struct rawinput_message
|
||||
@@ -1653,6 +1655,7 @@ struct rawinput_message
|
||||
static int queue_rawinput_message( struct process* process, void *arg )
|
||||
{
|
||||
const struct rawinput_message* raw_msg = arg;
|
||||
@ -281,7 +281,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
const struct rawinput_device *device = NULL;
|
||||
struct desktop *target_desktop = NULL, *desktop = NULL;
|
||||
struct thread *target_thread = NULL, *foreground = NULL;
|
||||
@@ -1662,6 +1665,8 @@ static int queue_rawinput_message( struct process* process, void *arg )
|
||||
@@ -1664,6 +1667,8 @@ static int queue_rawinput_message( struct process* process, void *arg )
|
||||
device = process->rawinput_mouse;
|
||||
else if (raw_msg->data.rawinput.type == RIM_TYPEKEYBOARD)
|
||||
device = process->rawinput_kbd;
|
||||
@ -290,7 +290,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
if (!device) return 0;
|
||||
|
||||
if (raw_msg->desktop) desktop = (struct desktop *)grab_object( raw_msg->desktop );
|
||||
@@ -1980,6 +1985,37 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_
|
||||
@@ -1982,6 +1987,37 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_
|
||||
queue_hardware_message( desktop, msg, 1 );
|
||||
}
|
||||
|
||||
@ -328,7 +328,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
/* check message filter for a hardware message */
|
||||
static int check_hw_message_filter( user_handle_t win, unsigned int msg_code,
|
||||
user_handle_t filter_win, unsigned int first, unsigned int last )
|
||||
@@ -2485,15 +2521,18 @@ DECL_HANDLER(send_hardware_message)
|
||||
@@ -2487,15 +2523,18 @@ DECL_HANDLER(send_hardware_message)
|
||||
|
||||
switch (req->input.type)
|
||||
{
|
||||
@ -350,7 +350,7 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
default:
|
||||
set_error( STATUS_INVALID_PARAMETER );
|
||||
}
|
||||
@@ -3265,20 +3304,23 @@ DECL_HANDLER(get_rawinput_buffer)
|
||||
@@ -3267,20 +3306,23 @@ DECL_HANDLER(get_rawinput_buffer)
|
||||
{
|
||||
struct message *msg = LIST_ENTRY( ptr, struct message, entry );
|
||||
struct hardware_msg_data *data = msg->data;
|
||||
@ -378,10 +378,10 @@ index 3ad376b776b..baf19fa17a6 100644
|
||||
}
|
||||
|
||||
diff --git a/server/trace.c b/server/trace.c
|
||||
index dfb39300668..3d2fc875176 100644
|
||||
index f217bb1fa90..687a9f8e5d9 100644
|
||||
--- a/server/trace.c
|
||||
+++ b/server/trace.c
|
||||
@@ -386,24 +386,28 @@ static void dump_hw_input( const char *prefix, const hw_input_t *input )
|
||||
@@ -399,24 +399,28 @@ static void dump_hw_input( const char *prefix, const hw_input_t *input )
|
||||
{
|
||||
switch (input->type)
|
||||
{
|
||||
@ -414,5 +414,5 @@ index dfb39300668..3d2fc875176 100644
|
||||
fprintf( stderr, "%s{type=%04x}", prefix, input->type );
|
||||
break;
|
||||
--
|
||||
2.27.0
|
||||
2.28.0
|
||||
|
||||
|
@ -1 +1,3 @@
|
||||
# Fixes: [5048] Support for TransmitFile
|
||||
# Broken nontrivially by db8a75312, and I'm working on a proper implementation for this.
|
||||
Disabled: true
|
||||
|
@ -1 +1 @@
|
||||
666c5b6e20e3b9e1e34d10b88372406f494699f2
|
||||
1a7b256f7c69c50c2a216317e03f9caeb268d0af
|
||||
|
Loading…
Reference in New Issue
Block a user