diff --git a/patches/fonts-Missing_Fonts/0002-fonts-Add-Liberation-Serif-as-an-Times-New-Roman-rep.patch b/patches/fonts-Missing_Fonts/0002-fonts-Add-Liberation-Serif-as-an-Times-New-Roman-rep.patch index 8f1d75d2..ba29ac18 100644 --- a/patches/fonts-Missing_Fonts/0002-fonts-Add-Liberation-Serif-as-an-Times-New-Roman-rep.patch +++ b/patches/fonts-Missing_Fonts/0002-fonts-Add-Liberation-Serif-as-an-Times-New-Roman-rep.patch @@ -1,29 +1,30 @@ -From 56544167ea9d090249d0e9e6cebb5e55268ffdfd Mon Sep 17 00:00:00 2001 +From 2533bbf747689e8326bb7795e890e7716144cb11 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 3 Sep 2015 01:25:14 +0200 -Subject: fonts: Add Liberation Serif as an Times New Roman replacement. +Subject: [PATCH] fonts: Add Liberation Serif as an Times New Roman + replacement. --- fonts/Makefile.in | 1 + - fonts/times.sfd | 97179 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + fonts/times.sfd | 97179 ++++++++++++++++++++++++++++++++++++++++++++ fonts/times.ttf | Bin 0 -> 147172 bytes 3 files changed, 97180 insertions(+) create mode 100644 fonts/times.sfd create mode 100644 fonts/times.ttf diff --git a/fonts/Makefile.in b/fonts/Makefile.in -index 93adf12..7d29b40 100644 +index fb2cd83c4e6..9251153705d 100644 --- a/fonts/Makefile.in +++ b/fonts/Makefile.in -@@ -11,4 +11,5 @@ FONT_SRCS = \ - system.sfd \ +@@ -12,4 +12,5 @@ FONT_SRCS = \ tahoma.sfd \ tahomabd.sfd \ + webdings.sfd \ + times.sfd \ wingding.sfd diff --git a/fonts/times.sfd b/fonts/times.sfd new file mode 100644 -index 0000000..6b41459 +index 00000000000..6b4145961f5 --- /dev/null +++ b/fonts/times.sfd @@ -0,0 +1,97179 @@ @@ -99111,5 +99112,5 @@ literal 0 HcmV?d00001 -- -2.6.2 +2.27.0 diff --git a/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch b/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch index 96bf0bb4..6239c1b1 100644 --- a/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch +++ b/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch @@ -1,4 +1,4 @@ -From 40fcca0f7bf71d2675bf44cdfd8f5a178d4275c3 Mon Sep 17 00:00:00 2001 +From cafaad67d4b5ed7985930e2a13e55d400cbbbbc9 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 20:56:49 -0700 Subject: [PATCH] ntdll: Add support for junction point creation. @@ -18,10 +18,10 @@ Signed-off-by: Erich E. Hoover create mode 100644 libs/port/renameat2.c diff --git a/configure.ac b/configure.ac -index f3e93b3fdb8..918f4a5253c 100644 +index d85f4dee7c..1bc2b5cbe2 100644 --- a/configure.ac +++ b/configure.ac -@@ -2218,6 +2218,8 @@ AC_CHECK_FUNCS(\ +@@ -2214,6 +2214,8 @@ AC_CHECK_FUNCS(\ pwrite \ readdir \ readlink \ @@ -31,7 +31,7 @@ index f3e93b3fdb8..918f4a5253c 100644 select \ setproctitle \ diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 5ca9742f0b6..1bc1af363e4 100644 +index 1bb71e711a..84fea2b869 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -38,6 +38,7 @@ @@ -42,8 +42,8 @@ index 5ca9742f0b6..1bc1af363e4 100644 #ifndef IO_COMPLETION_ALL_ACCESS #define IO_COMPLETION_ALL_ACCESS 0x001F0003 -@@ -5053,6 +5054,105 @@ static void test_file_readonly_access(void) - DeleteFileW(path); +@@ -5143,6 +5144,105 @@ static void test_mailslot_name(void) + CloseHandle( device ); } +static INT build_reparse_buffer(const WCHAR *filename, REPARSE_DATA_BUFFER **pbuffer) @@ -148,14 +148,15 @@ index 5ca9742f0b6..1bc1af363e4 100644 START_TEST(file) { HMODULE hkernel32 = GetModuleHandleA("kernel32.dll"); -@@ -5125,4 +5225,5 @@ START_TEST(file) +@@ -5215,5 +5315,6 @@ START_TEST(file) test_ioctl(); test_query_ea(); test_flush_buffers_file(); + test_reparse_points(); + test_mailslot_name(); } diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 372a8ec1248..cfa1ec0fe9c 100644 +index 7667bd6398..211ebc89df 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -36,6 +36,7 @@ @@ -174,7 +175,7 @@ index 372a8ec1248..cfa1ec0fe9c 100644 WINE_DEFAULT_DEBUG_CHANNEL(file); WINE_DECLARE_DEBUG_CHANNEL(winediag); -@@ -5645,6 +5647,116 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, +@@ -5643,6 +5645,116 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, } @@ -291,7 +292,7 @@ index 372a8ec1248..cfa1ec0fe9c 100644 /****************************************************************************** * NtFsControlFile (NTDLL.@) */ -@@ -5727,6 +5839,23 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap +@@ -5725,6 +5837,23 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; } @@ -316,7 +317,7 @@ index 372a8ec1248..cfa1ec0fe9c 100644 TRACE("FSCTL_SET_SPARSE: Ignoring request\n"); io->Information = 0; diff --git a/include/Makefile.in b/include/Makefile.in -index 216adf0d7ae..7dc16c230b6 100644 +index 216adf0d7a..7dc16c230b 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -520,6 +520,7 @@ SOURCES = \ @@ -329,7 +330,7 @@ index 216adf0d7ae..7dc16c230b6 100644 ntsecapi.h \ diff --git a/include/ntifs.h b/include/ntifs.h new file mode 100644 -index 00000000000..21d42e17325 +index 0000000000..21d42e1732 --- /dev/null +++ b/include/ntifs.h @@ -0,0 +1,42 @@ @@ -376,7 +377,7 @@ index 00000000000..21d42e17325 + +#endif /* __WINE_NTIFS_H */ diff --git a/include/wine/port.h b/include/wine/port.h -index 930efeeea1f..7d2c7388707 100644 +index 930efeeea1..7d2c738870 100644 --- a/include/wine/port.h +++ b/include/wine/port.h @@ -334,6 +334,15 @@ double rint(double x); @@ -396,7 +397,7 @@ index 930efeeea1f..7d2c7388707 100644 int statvfs( const char *path, struct statvfs *buf ); #endif diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in -index d1de285d527..4b1ecab7516 100644 +index d1de285d52..4b1ecab751 100644 --- a/libs/port/Makefile.in +++ b/libs/port/Makefile.in @@ -14,6 +14,7 @@ C_SRCS = \ @@ -409,7 +410,7 @@ index d1de285d527..4b1ecab7516 100644 statvfs.c \ diff --git a/libs/port/renameat2.c b/libs/port/renameat2.c new file mode 100644 -index 00000000000..f46f407ec71 +index 0000000000..f46f407ec7 --- /dev/null +++ b/libs/port/renameat2.c @@ -0,0 +1,55 @@ diff --git a/patches/ntdll-Junction_Points/0007-ntdll-Add-support-for-absolute-symlink-creation.patch b/patches/ntdll-Junction_Points/0007-ntdll-Add-support-for-absolute-symlink-creation.patch index 5596ede5..f691f13f 100644 --- a/patches/ntdll-Junction_Points/0007-ntdll-Add-support-for-absolute-symlink-creation.patch +++ b/patches/ntdll-Junction_Points/0007-ntdll-Add-support-for-absolute-symlink-creation.patch @@ -1,7 +1,7 @@ -From f74db8315285e44fe21d120337fe568ed9824ae1 Mon Sep 17 00:00:00 2001 +From 78fe8add28f8385a2d2aae635ff16c027f6240f7 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 21:06:24 -0700 -Subject: ntdll: Add support for absolute symlink creation. +Subject: [PATCH] ntdll: Add support for absolute symlink creation. Signed-off-by: Erich E. Hoover --- @@ -11,11 +11,11 @@ Signed-off-by: Erich E. Hoover 3 files changed, 143 insertions(+), 19 deletions(-) diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 77a1be8307b..986468a1495 100644 +index 2953c77f0ad..81fa9592e3d 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c -@@ -4973,26 +4973,50 @@ static void test_file_readonly_access(void) - DeleteFileW(path); +@@ -5205,26 +5205,50 @@ static void test_mailslot_name(void) + CloseHandle( device ); } -static INT build_reparse_buffer(const WCHAR *filename, REPARSE_DATA_BUFFER **pbuffer) @@ -73,7 +73,7 @@ index 77a1be8307b..986468a1495 100644 lstrcpyW(subst_dest, filename); lstrcpyW(print_dest, &filename[prefix_len]); *pbuffer = buffer; -@@ -5012,10 +5036,12 @@ static void test_reparse_points(void) +@@ -5244,10 +5268,12 @@ static void test_reparse_points(void) REPARSE_DATA_BUFFER *buffer = NULL; DWORD dwret, dwLen, dwFlags, err; INT buffer_len, string_len; @@ -87,7 +87,7 @@ index 77a1be8307b..986468a1495 100644 BOOL bret; /* Create a temporary folder for the junction point tests */ -@@ -5062,7 +5088,7 @@ static void test_reparse_points(void) +@@ -5294,7 +5320,7 @@ static void test_reparse_points(void) } dwret = NtQueryInformationFile(handle, &iosb, &old_attrib, sizeof(old_attrib), FileBasicInformation); ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's attributes (0x%x).\n", dwret); @@ -96,7 +96,7 @@ index 77a1be8307b..986468a1495 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); -@@ -5103,7 +5129,7 @@ static void test_reparse_points(void) +@@ -5335,7 +5361,7 @@ static void test_reparse_points(void) HeapFree(GetProcessHeap(), 0, buffer); handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0); @@ -105,7 +105,7 @@ index 77a1be8307b..986468a1495 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); CloseHandle(handle); -@@ -5118,7 +5144,7 @@ static void test_reparse_points(void) +@@ -5350,7 +5376,7 @@ static void test_reparse_points(void) ok(bret, "Failed to create junction point target directory.\n"); handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0); @@ -114,7 +114,7 @@ index 77a1be8307b..986468a1495 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); CloseHandle(handle); -@@ -5131,14 +5157,73 @@ static void test_reparse_points(void) +@@ -5363,14 +5389,73 @@ static void test_reparse_points(void) ok(dwret != (DWORD)~0, "Junction point doesn't exist (attributes: 0x%x)!\n", dwret); ok(dwret & FILE_ATTRIBUTE_REPARSE_POINT, "File is not a junction point! (attributes: 0x%x)\n", dwret); @@ -193,10 +193,10 @@ index 77a1be8307b..986468a1495 100644 } diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 3f6dcc6ab41..b8dc02127ba 100644 +index 9ad0d7dcb39..7150099f750 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -5601,18 +5601,34 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, +@@ -5664,18 +5664,34 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) { BOOL src_allocated = FALSE, dest_allocated = FALSE, tempdir_created = FALSE; @@ -234,7 +234,7 @@ index 3f6dcc6ab41..b8dc02127ba 100644 if ((status = server_get_unix_fd( handle, FILE_SPECIAL_ACCESS, &dest_fd, &needs_close, NULL, NULL ))) return status; -@@ -5647,6 +5663,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5710,6 +5726,18 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) strcat( magic_dest, "." ); strcat( magic_dest, "/" ); } @@ -253,7 +253,7 @@ index 3f6dcc6ab41..b8dc02127ba 100644 strcat( magic_dest, unix_dest ); /* Produce the link in a temporary location in the same folder */ -@@ -6009,6 +6037,7 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap +@@ -6072,6 +6100,7 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap switch(buffer->ReparseTag) { case IO_REPARSE_TAG_MOUNT_POINT: @@ -295,5 +295,5 @@ index 4539b89d583..ab3273d3f81 100644 typedef struct _REPARSE_GUID_DATA_BUFFER { DWORD ReparseTag; -- -2.17.1 +2.27.0 diff --git a/patches/ntdll-Junction_Points/0010-ntdll-Add-support-for-relative-symlink-creation.patch b/patches/ntdll-Junction_Points/0010-ntdll-Add-support-for-relative-symlink-creation.patch index 60397a19..17e91a36 100644 --- a/patches/ntdll-Junction_Points/0010-ntdll-Add-support-for-relative-symlink-creation.patch +++ b/patches/ntdll-Junction_Points/0010-ntdll-Add-support-for-relative-symlink-creation.patch @@ -1,7 +1,7 @@ -From 9baddd14dceb102d123a6470a12e43ffd4e1e4de Mon Sep 17 00:00:00 2001 +From c3cc1222c92372b8f260618835e547910ba6a07d Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 11 Apr 2019 12:16:49 -0600 -Subject: ntdll: Add support for relative symlink creation. +Subject: [PATCH] ntdll: Add support for relative symlink creation. Signed-off-by: Erich E. Hoover --- @@ -11,11 +11,11 @@ Signed-off-by: Erich E. Hoover 3 files changed, 109 insertions(+), 13 deletions(-) diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index b6a58c3f2a7..9b510fe9057 100644 +index 6e4e90b4bbf..9e05270a25e 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c -@@ -4973,7 +4973,8 @@ static void test_file_readonly_access(void) - DeleteFileW(path); +@@ -5205,7 +5205,8 @@ static void test_mailslot_name(void) + CloseHandle( device ); } -static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, REPARSE_DATA_BUFFER **pbuffer) @@ -24,7 +24,7 @@ index b6a58c3f2a7..9b510fe9057 100644 { static INT header_size = offsetof(REPARSE_DATA_BUFFER, GenericReparseBuffer); INT buffer_size, struct_size, data_size, string_len, prefix_len; -@@ -4991,7 +4992,7 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, REPARSE_DATA_B +@@ -5223,7 +5224,7 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, REPARSE_DATA_B default: return 0; } @@ -33,7 +33,7 @@ index b6a58c3f2a7..9b510fe9057 100644 string_len = lstrlenW(&filename[prefix_len]); data_size = (prefix_len + 2 * string_len + 2) * sizeof(WCHAR); buffer_size = struct_size + data_size; -@@ -5011,6 +5012,7 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, REPARSE_DATA_B +@@ -5243,6 +5244,7 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, REPARSE_DATA_B buffer->SymbolicLinkReparseBuffer.SubstituteNameLength = (prefix_len + string_len) * sizeof(WCHAR); buffer->SymbolicLinkReparseBuffer.PrintNameOffset = (prefix_len + string_len + 1) * sizeof(WCHAR); buffer->SymbolicLinkReparseBuffer.PrintNameLength = string_len * sizeof(WCHAR); @@ -41,7 +41,7 @@ index b6a58c3f2a7..9b510fe9057 100644 subst_dest = &buffer->SymbolicLinkReparseBuffer.PathBuffer[0]; print_dest = &buffer->SymbolicLinkReparseBuffer.PathBuffer[prefix_len + string_len + 1]; break; -@@ -5088,7 +5090,7 @@ static void test_reparse_points(void) +@@ -5320,7 +5322,7 @@ static void test_reparse_points(void) } dwret = NtQueryInformationFile(handle, &iosb, &old_attrib, sizeof(old_attrib), FileBasicInformation); ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's attributes (0x%x).\n", dwret); @@ -50,7 +50,7 @@ index b6a58c3f2a7..9b510fe9057 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); -@@ -5129,7 +5131,7 @@ static void test_reparse_points(void) +@@ -5361,7 +5363,7 @@ static void test_reparse_points(void) HeapFree(GetProcessHeap(), 0, buffer); handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0); @@ -59,7 +59,7 @@ index b6a58c3f2a7..9b510fe9057 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); CloseHandle(handle); -@@ -5144,7 +5146,7 @@ static void test_reparse_points(void) +@@ -5376,7 +5378,7 @@ static void test_reparse_points(void) ok(bret, "Failed to create junction point target directory.\n"); handle = CreateFileW(reparse_path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0); @@ -68,7 +68,7 @@ index b6a58c3f2a7..9b510fe9057 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%x)\n", GetLastError()); CloseHandle(handle); -@@ -5206,7 +5208,7 @@ static void test_reparse_points(void) +@@ -5438,7 +5440,7 @@ static void test_reparse_points(void) } dwret = NtQueryInformationFile(handle, &iosb, &old_attrib, sizeof(old_attrib), FileBasicInformation); ok(dwret == STATUS_SUCCESS, "Failed to get symlink folder's attributes (0x%x).\n", dwret); @@ -77,7 +77,7 @@ index b6a58c3f2a7..9b510fe9057 100644 bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create symlink! (0x%x)\n", GetLastError()); -@@ -5243,6 +5245,22 @@ static void test_reparse_points(void) +@@ -5475,6 +5477,22 @@ static void test_reparse_points(void) "Symlink folder's access time does not match.\n"); CloseHandle(handle); @@ -101,10 +101,10 @@ index b6a58c3f2a7..9b510fe9057 100644 /* Cleanup */ pRtlFreeUnicodeString(&nameW); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 232cbb36f42..3652fbb1a0d 100644 +index 0c6426242e8..fcad9fd68bb 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -5600,17 +5600,20 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, +@@ -5663,17 +5663,20 @@ static void ignore_server_ioctl_struct_holes( ULONG code, const void *in_buffer, */ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) { @@ -127,7 +127,7 @@ index 232cbb36f42..3652fbb1a0d 100644 int i; switch(buffer->ReparseTag) -@@ -5619,11 +5622,13 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5682,11 +5685,13 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) dest_len = buffer->MountPointReparseBuffer.SubstituteNameLength; offset = buffer->MountPointReparseBuffer.SubstituteNameOffset; dest = &buffer->MountPointReparseBuffer.PathBuffer[offset]; @@ -141,7 +141,7 @@ index 232cbb36f42..3652fbb1a0d 100644 break; default: return STATUS_NOT_IMPLEMENTED; -@@ -5635,8 +5640,64 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5698,8 +5703,64 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) if ((status = server_get_unix_name( handle, &unix_src ))) goto cleanup; src_allocated = TRUE; @@ -208,7 +208,7 @@ index 232cbb36f42..3652fbb1a0d 100644 for (;;) { unix_dest = malloc( unix_dest_len ); -@@ -5652,11 +5713,24 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5715,11 +5776,24 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) if (status != STATUS_SUCCESS && status != STATUS_NO_SUCH_FILE) goto cleanup; dest_allocated = TRUE; @@ -235,7 +235,7 @@ index 232cbb36f42..3652fbb1a0d 100644 for (i = 0; i < sizeof(ULONG)*8; i++) { if ((buffer->ReparseTag >> i) & 1) -@@ -5675,7 +5749,7 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5738,7 +5812,7 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) strcat( magic_dest, "." ); strcat( magic_dest, "/" ); } @@ -244,7 +244,7 @@ index 232cbb36f42..3652fbb1a0d 100644 /* Produce the link in a temporary location in the same folder */ strcpy( tmpdir, unix_src ); -@@ -5725,7 +5799,9 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) +@@ -5788,7 +5862,9 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer) cleanup: if (tempdir_created) rmdir( tmpdir ); @@ -266,5 +266,5 @@ index ab3273d3f81..0d02225bc4f 100644 + #endif /* __WINE_NTIFS_H */ -- -2.17.1 +2.27.0 diff --git a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch index c9924d95..036b0be2 100644 --- a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch +++ b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch @@ -1,4 +1,4 @@ -From a010b05e656e6abc4c0b36f1e75902dbecb5dfdc Mon Sep 17 00:00:00 2001 +From b38ef24ec2a84cf8ae1e3d1fcb12c249a0d9c512 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 6 Jun 2015 07:03:33 +0800 Subject: [PATCH] ntdll: Improve stub of NtQueryEaFile. @@ -10,7 +10,7 @@ Based on a patch by Qian Hong. 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 6164b0c4bde..802d7ca71aa 100644 +index decfaff638a..acba3540282 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -84,6 +84,7 @@ static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PV @@ -21,7 +21,7 @@ index 6164b0c4bde..802d7ca71aa 100644 static WCHAR fooW[] = {'f','o','o',0}; -@@ -4904,6 +4905,86 @@ static void test_flush_buffers_file(void) +@@ -4990,6 +4991,86 @@ static void test_flush_buffers_file(void) DeleteFileA(buffer); } @@ -108,7 +108,7 @@ index 6164b0c4bde..802d7ca71aa 100644 static void test_file_readonly_access(void) { static const DWORD default_sharing = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; -@@ -5012,6 +5093,7 @@ START_TEST(file) +@@ -5163,6 +5244,7 @@ START_TEST(file) pNtQueryVolumeInformationFile = (void *)GetProcAddress(hntdll, "NtQueryVolumeInformationFile"); pNtQueryFullAttributesFile = (void *)GetProcAddress(hntdll, "NtQueryFullAttributesFile"); pNtFlushBuffersFile = (void *)GetProcAddress(hntdll, "NtFlushBuffersFile"); @@ -116,18 +116,19 @@ index 6164b0c4bde..802d7ca71aa 100644 test_read_write(); test_NtCreateFile(); -@@ -5041,5 +5123,6 @@ START_TEST(file) +@@ -5192,6 +5274,7 @@ START_TEST(file) test_query_volume_information_file(); test_query_attribute_information_file(); test_ioctl(); + test_query_ea(); test_flush_buffers_file(); + test_mailslot_name(); } diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 20eb6a05922..75e78a0d004 100644 +index 350a42f4249..e54a010855f 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -6440,9 +6440,20 @@ NTSTATUS WINAPI NtQueryEaFile( HANDLE handle, IO_STATUS_BLOCK *io, void *buffer, +@@ -6555,9 +6555,20 @@ NTSTATUS WINAPI NtQueryEaFile( HANDLE handle, IO_STATUS_BLOCK *io, void *buffer, BOOLEAN single_entry, void *list, ULONG list_len, ULONG *index, BOOLEAN restart ) { diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index b685077a..9c22f336 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "ed8358393413d52096c56e96b44ee73f15053f91" + echo "70b735760e2e89db11aa76ab3956ea0d1f6e40d4" } # Show version information @@ -305,7 +305,6 @@ patch_enable_all () enable_winemenubuilder_integration="$1" enable_wineps_drv_PostScript_Fixes="$1" enable_winepulse_PulseAudio_Support="$1" - enable_winevulkan_vkGetPhysicalDeviceSurfaceCapabilitiesKHR="$1" enable_winex11_CandidateWindowPos="$1" enable_winex11_MWM_Decorations="$1" enable_winex11_UpdateLayeredWindow="$1" @@ -1006,9 +1005,6 @@ patch_enable () winepulse-PulseAudio_Support) enable_winepulse_PulseAudio_Support="$2" ;; - winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR) - enable_winevulkan_vkGetPhysicalDeviceSurfaceCapabilitiesKHR="$2" - ;; winex11-CandidateWindowPos) enable_winex11_CandidateWindowPos="$2" ;; @@ -5901,21 +5897,6 @@ if test "$enable_winepulse_PulseAudio_Support" -eq 1; then ) >> "$patchlist" fi -# Patchset winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR -# | -# | This patchset fixes the following Wine bugs: -# | * [#49298] winevulkan: Avoid returning 0 for swapchain maxImageCount. -# | -# | Modified files: -# | * dlls/winevulkan/make_vulkan, dlls/winevulkan/vulkan.c, dlls/winevulkan/vulkan_thunks.c, dlls/winevulkan/vulkan_thunks.h -# | -if test "$enable_winevulkan_vkGetPhysicalDeviceSurfaceCapabilitiesKHR" -eq 1; then - patch_apply winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/0001-winevulkan-Avoid-returning-0-for-swapchain-maxImageC.patch - ( - printf '%s\n' '+ { "Józef Kucia", "winevulkan: Avoid returning 0 for swapchain maxImageCount.", 1 },'; - ) >> "$patchlist" -fi - # Patchset winex11-CandidateWindowPos # | # | This patchset fixes the following Wine bugs: diff --git a/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch b/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch index c87f9971..c44da357 100644 --- a/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch +++ b/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch @@ -1,4 +1,4 @@ -From 959b3618856923c384de07bc44124ba0fa3a3a64 Mon Sep 17 00:00:00 2001 +From 33767942e97c0c4a32c1e30dd347f1a69ec5707e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 8 Mar 2017 02:12:37 +0100 Subject: [PATCH] ntdll: Implement ObjectTypesInformation in NtQueryObject. @@ -12,7 +12,7 @@ Subject: [PATCH] ntdll: Implement ObjectTypesInformation in NtQueryObject. 5 files changed, 165 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index f68827c7180..b71e81ef364 100644 +index fba64b8f0d6..e38e4d633b6 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -78,6 +78,21 @@ static void (WINAPI *pRtlWakeAddressSingle)( const void * ); @@ -37,8 +37,8 @@ index f68827c7180..b71e81ef364 100644 static void test_case_sensitive (void) { NTSTATUS status; -@@ -1466,6 +1481,47 @@ static void test_query_object(void) - +@@ -1495,6 +1510,47 @@ static void test_query_object(void) + pNtClose(handle); } +static void test_query_object_types(void) @@ -85,7 +85,7 @@ index f68827c7180..b71e81ef364 100644 static void test_type_mismatch(void) { HANDLE h; -@@ -2063,6 +2119,7 @@ START_TEST(om) +@@ -2092,6 +2148,7 @@ START_TEST(om) test_directory(); test_symboliclink(); test_query_object(); @@ -94,10 +94,10 @@ index f68827c7180..b71e81ef364 100644 test_event(); test_mutant(); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 20eb6a05922..bb9bee0340b 100644 +index 1800cc1f21d..a377ce7bd7b 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -130,6 +130,8 @@ +@@ -132,6 +132,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(file); WINE_DECLARE_DEBUG_CHANNEL(winediag); @@ -106,7 +106,7 @@ index 20eb6a05922..bb9bee0340b 100644 #define MAX_DOS_DRIVES 26 #define FILE_WRITE_TO_END_OF_FILE ((LONGLONG)-1) -@@ -6595,6 +6597,57 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas +@@ -7438,6 +7440,57 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas break; } @@ -165,10 +165,10 @@ index 20eb6a05922..bb9bee0340b 100644 { OBJECT_DATA_INFORMATION* p = ptr; diff --git a/include/winternl.h b/include/winternl.h -index 1266f55c6b1..9ec91f743f9 100644 +index ac1e0880d59..8a3bdd2b95c 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -843,7 +843,7 @@ typedef enum _OBJECT_INFORMATION_CLASS { +@@ -1116,7 +1116,7 @@ typedef enum _OBJECT_INFORMATION_CLASS { ObjectBasicInformation, ObjectNameInformation, ObjectTypeInformation, @@ -177,7 +177,7 @@ index 1266f55c6b1..9ec91f743f9 100644 ObjectDataInformation } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; -@@ -1281,9 +1281,35 @@ typedef struct _OBJECT_NAME_INFORMATION { +@@ -1576,9 +1576,35 @@ typedef struct _OBJECT_NAME_INFORMATION { typedef struct __OBJECT_TYPE_INFORMATION { UNICODE_STRING TypeName; @@ -215,10 +215,10 @@ index 1266f55c6b1..9ec91f743f9 100644 #ifdef __WINESRC__ DWORD_PTR ExitStatus; diff --git a/server/directory.c b/server/directory.c -index 198fc48ece2..ab0498e952f 100644 +index b735602a805..d89da8b169b 100644 --- a/server/directory.c +++ b/server/directory.c -@@ -72,6 +72,8 @@ static const struct object_ops object_type_ops = +@@ -73,6 +73,8 @@ static const struct object_ops object_type_ops = no_destroy /* destroy */ }; @@ -227,7 +227,7 @@ index 198fc48ece2..ab0498e952f 100644 struct directory { -@@ -236,7 +238,8 @@ struct object_type *get_object_type( const struct unicode_str *name ) +@@ -238,7 +240,8 @@ struct object_type *get_object_type( const struct unicode_str *name ) { if (get_error() != STATUS_OBJECT_NAME_EXISTS) { @@ -237,7 +237,7 @@ index 198fc48ece2..ab0498e952f 100644 make_object_static( &type->obj ); } clear_error(); -@@ -551,3 +554,17 @@ DECL_HANDLER(get_object_type) +@@ -553,3 +556,17 @@ DECL_HANDLER(get_object_type) } release_object( obj ); } @@ -256,10 +256,10 @@ index 198fc48ece2..ab0498e952f 100644 + else set_error( STATUS_NO_MORE_ENTRIES ); +} diff --git a/server/protocol.def b/server/protocol.def -index a121c371c19..aa3be515ffe 100644 +index ab5efef36e4..ade5e85d10b 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3440,6 +3440,15 @@ struct handle_info +@@ -3408,6 +3408,15 @@ struct handle_info @END diff --git a/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch b/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch index a92116f8..95b16750 100644 --- a/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch +++ b/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch @@ -1,4 +1,4 @@ -From 63e07d8738f715c04fe46d2e50e63b8a46b707af Mon Sep 17 00:00:00 2001 +From 65b7fe29b00024cfe5d7d9277927b76f8c4c98d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 8 Mar 2017 19:39:29 +0100 Subject: [PATCH] ntdll: Mimic object type behavior for different windows @@ -11,10 +11,10 @@ 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 398ad6bed4e..b538160f6d0 100644 +index abc8a8eef1c..1aa69393c9d 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c -@@ -76,6 +76,7 @@ static NTSTATUS (WINAPI *pNtQuerySystemTime)( LARGE_INTEGER * ); +@@ -73,6 +73,7 @@ static NTSTATUS (WINAPI *pNtQuerySystemTime)( LARGE_INTEGER * ); static NTSTATUS (WINAPI *pRtlWaitOnAddress)( const void *, const void *, SIZE_T, const LARGE_INTEGER * ); static void (WINAPI *pRtlWakeAddressAll)( const void * ); static void (WINAPI *pRtlWakeAddressSingle)( const void * ); @@ -22,8 +22,8 @@ index 398ad6bed4e..b538160f6d0 100644 #define KEYEDEVENT_WAIT 0x0001 #define KEYEDEVENT_WAKE 0x0002 -@@ -1598,13 +1599,31 @@ static void test_query_object(void) - +@@ -1510,13 +1511,31 @@ static void test_query_object(void) + pNtClose(handle); } +static BOOL winver_equal_or_newer(WORD major, WORD minor) @@ -55,7 +55,7 @@ index 398ad6bed4e..b538160f6d0 100644 buffer = HeapAlloc( GetProcessHeap(), 0, sizeof(OBJECT_TYPES_INFORMATION) ); ok( buffer != NULL, "Failed to allocate memory\n" ); -@@ -1632,11 +1651,54 @@ static void test_query_object_types(void) +@@ -1544,11 +1563,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 398ad6bed4e..b538160f6d0 100644 } static void test_type_mismatch(void) -@@ -2263,6 +2325,7 @@ START_TEST(om) +@@ -2140,6 +2202,7 @@ START_TEST(om) pRtlWaitOnAddress = (void *)GetProcAddress(hntdll, "RtlWaitOnAddress"); pRtlWakeAddressAll = (void *)GetProcAddress(hntdll, "RtlWakeAddressAll"); pRtlWakeAddressSingle = (void *)GetProcAddress(hntdll, "RtlWakeAddressSingle"); @@ -119,10 +119,10 @@ index 398ad6bed4e..b538160f6d0 100644 test_case_sensitive(); test_namespace_pipe(); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index ace1b98e534..f9aa98ca559 100644 +index 10aafef6b58..bd3e8e41267 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -6488,7 +6488,10 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas +@@ -7436,7 +7436,10 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas } if (status == STATUS_SUCCESS) { @@ -135,10 +135,10 @@ index ace1b98e534..f9aa98ca559 100644 } } diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c -index a795d56e8bc..785a714e88a 100644 +index 552752b15d0..70c1661f9bb 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c -@@ -1992,6 +1992,18 @@ static void get_timezone_info( RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi ) +@@ -1984,6 +1984,18 @@ static void get_timezone_info( RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi ) pthread_mutex_unlock( &tz_mutex ); } @@ -157,7 +157,7 @@ index a795d56e8bc..785a714e88a 100644 /****************************************************************************** * NtQuerySystemInformation (NTDLL.@) -@@ -2396,7 +2408,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class, +@@ -2384,7 +2396,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 a795d56e8bc..785a714e88a 100644 /* FIXME: Fill out HandleFlags, ObjectPointer */ } } -@@ -2449,7 +2461,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class, +@@ -2437,7 +2449,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 a795d56e8bc..785a714e88a 100644 /* FIXME: Fill out remaining fields */ } } -@@ -2669,7 +2681,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class, +@@ -2693,7 +2705,6 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class, return ret; } diff --git a/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/0001-winevulkan-Avoid-returning-0-for-swapchain-maxImageC.patch b/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/0001-winevulkan-Avoid-returning-0-for-swapchain-maxImageC.patch deleted file mode 100644 index 1c1fd173..00000000 --- a/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/0001-winevulkan-Avoid-returning-0-for-swapchain-maxImageC.patch +++ /dev/null @@ -1,96 +0,0 @@ -From da32913e84869282c7e78c09f6b15cb71c4fb255 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B3zef=20Kucia?= -Date: Wed, 24 Jun 2020 17:31:03 -0600 -Subject: [PATCH] winevulkan: Avoid returning 0 for swapchain maxImageCount. - -Multiple games, Strange Brigade, No Man's Sky, Path of Exile, do not handle it -correctly when maxImageCount is set to 0 or undefined.DXGI_MAX_SWAP_CHAIN_BUFFERS is 16. -AMDVLK also sets this to 16 when no maxImageCount is specified. ---- - dlls/winevulkan/make_vulkan | 2 +- - dlls/winevulkan/vulkan.c | 19 +++++++++++++++++++ - dlls/winevulkan/vulkan_thunks.c | 3 +-- - dlls/winevulkan/vulkan_thunks.h | 2 ++ - 4 files changed, 23 insertions(+), 3 deletions(-) - -diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan -index b84eb39587e..59df1dbf407 100755 ---- a/dlls/winevulkan/make_vulkan -+++ b/dlls/winevulkan/make_vulkan -@@ -183,7 +183,7 @@ FUNCTION_OVERRIDES = { - # VK_KHR_surface - "vkDestroySurfaceKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, - "vkGetPhysicalDeviceSurfaceSupportKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, -- "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, -+ "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : False, "private_thunk" : True}, - "vkGetPhysicalDeviceSurfaceFormatsKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, - "vkGetPhysicalDeviceSurfacePresentModesKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, - -diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c -index 4642975ad0f..abb9e0a9063 100644 ---- a/dlls/winevulkan/vulkan.c -+++ b/dlls/winevulkan/vulkan.c -@@ -1409,6 +1409,25 @@ void WINAPI wine_vkGetPrivateDataEXT(VkDevice device, VkObjectType object_type, - device->funcs.p_vkGetPrivateDataEXT(device->device, object_type, object_handle, private_data_slot, data); - } - -+VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice phys_dev, -+ VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *capabilities) -+{ -+ VkResult res; -+ -+ TRACE("%p, 0x%s, %p\n", phys_dev, wine_dbgstr_longlong(surface), capabilities); -+ -+ res = thunk_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(phys_dev, surface, capabilities); -+ -+ /* HACK: It happened more than once that a Windows game didn't expect that maxImageCount can be -+ * set to 0. A value of 0 means that there is no limit on the number of images. */ -+ if (res == VK_SUCCESS && capabilities->minImageCount && !capabilities->maxImageCount) -+ { -+ capabilities->maxImageCount = 16; -+ } -+ -+ return res; -+} -+ - BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, void *reserved) - { - TRACE("%p, %u, %p\n", hinst, reason, reserved); -diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c -index 94aa1e3fb7b..d5b39851eaf 100644 ---- a/dlls/winevulkan/vulkan_thunks.c -+++ b/dlls/winevulkan/vulkan_thunks.c -@@ -4956,9 +4956,8 @@ static VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysica - #endif - } - --VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) -+VkResult thunk_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) - { -- TRACE("%p, 0x%s, %p\n", physicalDevice, wine_dbgstr_longlong(surface), pSurfaceCapabilities); - return physicalDevice->instance->funcs.p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice->phys_dev, surface, pSurfaceCapabilities); - } - -diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h -index 7055d4fb135..f0f0ae787b5 100644 ---- a/dlls/winevulkan/vulkan_thunks.h -+++ b/dlls/winevulkan/vulkan_thunks.h -@@ -40,6 +40,7 @@ VkResult WINAPI wine_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice - VkResult WINAPI wine_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo, VkImageFormatProperties2 *pImageFormatProperties) DECLSPEC_HIDDEN; - void WINAPI wine_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties); - void WINAPI wine_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties) DECLSPEC_HIDDEN; -+VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities); - void WINAPI wine_vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t *pData) DECLSPEC_HIDDEN; - VkResult WINAPI wine_vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo *pSubmits, VkFence fence); - VkResult WINAPI wine_vkSetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data) DECLSPEC_HIDDEN; -@@ -49,6 +50,7 @@ VkResult thunk_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physic - VkResult thunk_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo, VkImageFormatProperties2 *pImageFormatProperties) DECLSPEC_HIDDEN; - void thunk_vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties) DECLSPEC_HIDDEN; - void thunk_vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties) DECLSPEC_HIDDEN; -+VkResult thunk_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) DECLSPEC_HIDDEN; - - typedef struct VkAcquireNextImageInfoKHR_host - { --- -2.27.0 - diff --git a/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/definition b/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/definition deleted file mode 100644 index 7ec7c9e7..00000000 --- a/patches/winevulkan-vkGetPhysicalDeviceSurfaceCapabilitiesKHR/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [49298] winevulkan: Avoid returning 0 for swapchain maxImageCount. diff --git a/staging/upstream-commit b/staging/upstream-commit index 8018247b..60e0016f 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -ed8358393413d52096c56e96b44ee73f15053f91 +70b735760e2e89db11aa76ab3956ea0d1f6e40d4