Rebase against 1a7b256f7c69c50c2a216317e03f9caeb268d0af.

This commit is contained in:
Zebediah Figura 2020-09-23 17:31:14 -05:00
parent 22ed5ee061
commit 5087d8a8d9
15 changed files with 131 additions and 446 deletions

View File

@ -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();

View File

@ -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

View File

@ -1 +1,2 @@
Fixes: [49692] mfplat: Improved support for multiple video formats.
Disabled: true

View File

@ -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

View File

@ -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))

View File

@ -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;

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1,3 @@
# Fixes: [5048] Support for TransmitFile
# Broken nontrivially by db8a75312, and I'm working on a proper implementation for this.
Disabled: true

View File

@ -1 +1 @@
666c5b6e20e3b9e1e34d10b88372406f494699f2
1a7b256f7c69c50c2a216317e03f9caeb268d0af