diff --git a/patches/Compiler_Warnings/definition b/patches/Compiler_Warnings/definition deleted file mode 100644 index 4dd98ae6..00000000 --- a/patches/Compiler_Warnings/definition +++ /dev/null @@ -1 +0,0 @@ -Depends: ml-patches diff --git a/patches/dinput8-shared-code/definition b/patches/dinput8-shared-code/definition index 2f80ae8a..9750c2b2 100644 --- a/patches/dinput8-shared-code/definition +++ b/patches/dinput8-shared-code/definition @@ -1 +1 @@ -Fixes: [45327] Stop access volation in League of Legends +Fixes: [45568] League of Legends 8.12+ fails to start a game (anticheat engine, validation of loaded DLLs) diff --git a/patches/kernel32-AttachConsole/0001-kernel32-Add-AttachConsole-implementation.patch b/patches/kernel32-AttachConsole/0001-kernel32-Add-AttachConsole-implementation.patch deleted file mode 100644 index 40a0a623..00000000 --- a/patches/kernel32-AttachConsole/0001-kernel32-Add-AttachConsole-implementation.patch +++ /dev/null @@ -1,289 +0,0 @@ -From fb031b7cf30e5258aa855019961bbdeafb3cfa78 Mon Sep 17 00:00:00 2001 -From: Jacek Caban -Date: Sat, 28 Jul 2018 10:49:59 +1000 -Subject: [PATCH] kernel32: Add AttachConsole implementation - ---- - dlls/kernel32/console.c | 19 +++++- - dlls/kernel32/tests/console.c | 131 +++++++++++++++++++++++++++++++++++++++--- - server/console.c | 43 ++++++++++++++ - server/protocol.def | 10 ++++ - 4 files changed, 193 insertions(+), 10 deletions(-) - -diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c -index 51061de..1637a87 100644 ---- a/dlls/kernel32/console.c -+++ b/dlls/kernel32/console.c -@@ -2909,8 +2909,23 @@ BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE hConsoleOutput, LPSMALL_RECT lpScr - */ - BOOL WINAPI AttachConsole(DWORD dwProcessId) - { -- FIXME("stub %x\n",dwProcessId); -- return TRUE; -+ BOOL ret; -+ -+ TRACE("(%x)\n", dwProcessId); -+ -+ SERVER_START_REQ( attach_console ) -+ { -+ req->pid = dwProcessId; -+ ret = !wine_server_call_err( req ); -+ if (ret) -+ { -+ SetStdHandle(STD_INPUT_HANDLE, wine_server_ptr_handle(reply->std_in)); -+ SetStdHandle(STD_OUTPUT_HANDLE, wine_server_ptr_handle(reply->std_out)); -+ SetStdHandle(STD_ERROR_HANDLE, wine_server_ptr_handle(reply->std_err)); -+ } -+ } -+ SERVER_END_REQ; -+ return ret; - } - - /****************************************************************** -diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c -index ac77ab7..acd61d0 100644 ---- a/dlls/kernel32/tests/console.c -+++ b/dlls/kernel32/tests/console.c -@@ -208,19 +208,29 @@ static void testEmptyWrite(HANDLE hCon) - okCURSOR(hCon, c); - } - --static void testWriteSimple(HANDLE hCon) -+static void simple_write_console(HANDLE console, const char *text) - { -- COORD c; -- DWORD len; -- const char* mytest = "abcdefg"; -- const int mylen = strlen(mytest); -+ DWORD len; -+ COORD c = {0, 0}; -+ BOOL ret; - - /* single line write */ - c.X = c.Y = 0; -- ok(SetConsoleCursorPosition(hCon, c) != 0, "Cursor in upper-left\n"); -+ ok(SetConsoleCursorPosition(console, c) != 0, "Cursor in upper-left\n"); -+ -+ ret = WriteConsoleA(console, text, strlen(text), &len, NULL); -+ ok(ret, "WriteConsoleA failed: %u\n", GetLastError()); -+ ok(len == strlen(text), "unexpected len %u\n", len); -+} -+ -+static void testWriteSimple(HANDLE hCon) -+{ -+ const char* mytest = "abcdefg"; -+ int mylen = strlen(mytest); -+ COORD c = {0, 0}; -+ -+ simple_write_console(hCon, mytest); - -- ok(WriteConsoleA(hCon, mytest, mylen, &len, NULL) != 0 && len == mylen, "WriteConsole\n"); -- c.Y = 0; - for (c.X = 0; c.X < mylen; c.X++) - { - okCHAR(hCon, c, mytest[c.X], TEST_ATTRIB); -@@ -3019,6 +3029,98 @@ static void test_GetConsoleScreenBufferInfoEx(HANDLE std_output) - ok(GetLastError() == 0xdeadbeef, "got %u, expected 0xdeadbeef\n", GetLastError()); - } - -+static void test_AttachConsole_child(DWORD console_pid) -+{ -+ HANDLE pipe_in, pipe_out; -+ COORD c = {0,0}; -+ HANDLE console; -+ char buf[32]; -+ DWORD len; -+ BOOL res; -+ -+ res = CreatePipe(&pipe_in, &pipe_out, NULL, 0); -+ ok(res, "CreatePipe failed: %u\n", GetLastError()); -+ -+ res = AttachConsole(console_pid); -+ ok(!res && GetLastError() == ERROR_ACCESS_DENIED, -+ "AttachConsole returned: %x(%u)\n", res, GetLastError()); -+ -+ res = FreeConsole(); -+ ok(res, "FreeConsole failed: %u\n", GetLastError()); -+ -+ SetStdHandle(STD_ERROR_HANDLE, pipe_out); -+ -+ res = AttachConsole(console_pid); -+ ok(res, "AttachConsole failed: %u\n", GetLastError()); -+ -+ ok(pipe_out != GetStdHandle(STD_ERROR_HANDLE), "std handle not set to console\n"); -+ -+ console = CreateFileA("CONOUT$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0); -+ ok(console != INVALID_HANDLE_VALUE, "Could not open console\n"); -+ -+ res = ReadConsoleOutputCharacterA(console, buf, 6, c, &len); -+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError()); -+ ok(len == 6, "len = %u\n", len); -+ ok(!memcmp(buf, "Parent", 6), "Unexpected console output\n"); -+ -+ res = FreeConsole(); -+ ok(res, "FreeConsole failed: %u\n", GetLastError()); -+ -+ SetStdHandle(STD_INPUT_HANDLE, pipe_in); -+ SetStdHandle(STD_OUTPUT_HANDLE, pipe_out); -+ -+ res = AttachConsole(ATTACH_PARENT_PROCESS); -+ ok(res, "AttachConsole failed: %u\n", GetLastError()); -+ -+ ok(pipe_in != GetStdHandle(STD_INPUT_HANDLE), "std handle not set to console\n"); -+ ok(pipe_out != GetStdHandle(STD_OUTPUT_HANDLE), "std handle not set to console\n"); -+ -+ console = CreateFileA("CONOUT$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0); -+ ok(console != INVALID_HANDLE_VALUE, "Could not open console\n"); -+ -+ res = ReadConsoleOutputCharacterA(console, buf, 6, c, &len); -+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError()); -+ ok(len == 6, "len = %u\n", len); -+ ok(!memcmp(buf, "Parent", 6), "Unexpected console output\n"); -+ -+ simple_write_console(console, "Child"); -+ CloseHandle(console); -+ -+ res = FreeConsole(); -+ ok(res, "FreeConsole failed: %u\n", GetLastError()); -+ -+ res = CloseHandle(pipe_in); -+ ok(res, "pipe_in is no longer valid\n"); -+ res = CloseHandle(pipe_out); -+ ok(res, "pipe_out is no longer valid\n"); -+} -+ -+static void test_AttachConsole(HANDLE console) -+{ -+ STARTUPINFOA si = { sizeof(si) }; -+ PROCESS_INFORMATION info; -+ char **argv, buf[MAX_PATH]; -+ COORD c = {0,0}; -+ DWORD len; -+ BOOL res; -+ -+ simple_write_console(console, "Parent console"); -+ -+ winetest_get_mainargs(&argv); -+ sprintf(buf, "\"%s\" console attach_console %x", argv[0], GetCurrentProcessId()); -+ res = CreateProcessA(NULL, buf, NULL, NULL, TRUE, 0, NULL, NULL, &si, &info); -+ ok(res, "CreateProcess failed: %u\n", GetLastError()); -+ CloseHandle(info.hThread); -+ -+ winetest_wait_child_process(info.hProcess); -+ CloseHandle(info.hProcess); -+ -+ res = ReadConsoleOutputCharacterA(console, buf, 5, c, &len); -+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError()); -+ ok(len == 5, "len = %u\n", len); -+ ok(!memcmp(buf, "Child", 5), "Unexpected console output\n"); -+} -+ - START_TEST(console) - { - static const char font_name[] = "Lucida Console"; -@@ -3030,9 +3132,21 @@ START_TEST(console) - char old_font[LF_FACESIZE]; - BOOL delete = FALSE; - DWORD size; -+ char **argv; -+ int argc; - - init_function_pointers(); - -+ argc = winetest_get_mainargs(&argv); -+ -+ if (argc > 3 && !strcmp(argv[2], "attach_console")) -+ { -+ DWORD parent_pid; -+ sscanf(argv[3], "%x", &parent_pid); -+ test_AttachConsole_child(parent_pid); -+ return; -+ } -+ - /* be sure we have a clean console (and that's our own) - * FIXME: this will make the test fail (currently) if we don't run - * under X11 -@@ -3170,4 +3284,5 @@ START_TEST(console) - test_GetConsoleFontInfo(hConOut); - test_SetConsoleFont(hConOut); - test_GetConsoleScreenBufferInfoEx(hConOut); -+ test_AttachConsole(hConOut); - } -diff --git a/server/console.c b/server/console.c -index 058c8ce..8460a7f 100644 ---- a/server/console.c -+++ b/server/console.c -@@ -1546,6 +1546,49 @@ DECL_HANDLER(open_console) - else if (!get_error()) set_error( STATUS_ACCESS_DENIED ); - } - -+/* attach to a other process's console */ -+DECL_HANDLER(attach_console) -+{ -+ struct process *process; -+ -+ if (current->process->console) -+ { -+ set_error( STATUS_ACCESS_DENIED ); -+ return; -+ } -+ -+ process = get_process_from_id( req->pid == ATTACH_PARENT_PROCESS -+ ? current->process->parent_id : req->pid ); -+ if (!process) return; -+ -+ if (process->console && process->console->active ) -+ { -+ reply->std_in = alloc_handle( current->process, process->console, GENERIC_READ, 0 ); -+ if (!reply->std_in) goto error; -+ -+ reply->std_out = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 ); -+ if (!reply->std_out) goto error; -+ -+ reply->std_err = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 ); -+ if (!reply->std_err) goto error; -+ -+ current->process->console = (struct console_input*)grab_object( process->console ); -+ current->process->console->num_proc++; -+ } -+ else -+ { -+ set_error( STATUS_INVALID_HANDLE ); -+ } -+ -+ release_object( process ); -+ return; -+ -+error: -+ if (reply->std_in) close_handle( current->process, reply->std_in); -+ if (reply->std_out) close_handle( current->process, reply->std_out); -+ release_object( process ); -+} -+ - /* set info about a console input */ - DECL_HANDLER(set_console_input_info) - { -diff --git a/server/protocol.def b/server/protocol.def -index 5d89c2b..c8bb3b1 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -1463,6 +1463,16 @@ struct console_renderer_event - @END - - -+/* Attach to a other process's console */ -+@REQ(attach_console) -+ process_id_t pid; /* pid of attached console process */ -+@REPLY -+ obj_handle_t std_in; /* attached stdin */ -+ obj_handle_t std_out; /* attached stdout */ -+ obj_handle_t std_err; /* attached stderr */ -+@END -+ -+ - /* Get the input queue wait event */ - @REQ(get_console_wait_event) - @REPLY --- -1.9.1 - diff --git a/patches/kernel32-AttachConsole/definition b/patches/kernel32-AttachConsole/definition deleted file mode 100644 index 7391cdeb..00000000 --- a/patches/kernel32-AttachConsole/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [41573] AttachConsole implementation. -Fixes: [43910] "Battle.net helper.exe" [NOT BLIZZARD APP!] crashes with Win 7 or higher diff --git a/patches/ml-patches/0008-programs-Allow-to-disable-MIME-type-associations.patch b/patches/ml-patches/0008-programs-Allow-to-disable-MIME-type-associations.patch deleted file mode 100644 index 12c0cb85..00000000 --- a/patches/ml-patches/0008-programs-Allow-to-disable-MIME-type-associations.patch +++ /dev/null @@ -1,200 +0,0 @@ -From 9448c872e54c1f930c213bd639c5650c98e3e89f Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Wed, 25 Jul 2018 15:22:57 +0800 -Subject: [PATCH 08/24] programs: Allow to disable MIME-type associations. - -This patch should at least mitigate the state of the bug 19182. - -Signed-off-by: Dmitry Timoshkov ---- - programs/winecfg/resource.h | 1 + - programs/winecfg/theme.c | 30 ++++++++++++++++++++-- - programs/winecfg/winecfg.rc | 40 ++++++++++++++++-------------- - programs/winemenubuilder/winemenubuilder.c | 23 ++++++++++++++++- - 4 files changed, 73 insertions(+), 21 deletions(-) - -diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h -index 0c0b038..2760e92 100644 ---- a/programs/winecfg/resource.h -+++ b/programs/winecfg/resource.h -@@ -176,6 +176,7 @@ - #define IDC_SYSPARAM_COLOR_TEXT 1415 - #define IDC_SYSPARAM_COLOR 1416 - #define IDC_SYSPARAM_FONT 1417 -+#define IDC_ENABLE_FILE_ASSOCIATIONS 1418 - - #define IDC_SYSPARAMS_BUTTON 8400 - #define IDC_SYSPARAMS_BUTTON_TEXT 8401 -diff --git a/programs/winecfg/theme.c b/programs/winecfg/theme.c -index f98dcc3..863bc6b 100644 ---- a/programs/winecfg/theme.c -+++ b/programs/winecfg/theme.c -@@ -1168,6 +1168,26 @@ static void on_select_font(HWND hDlg) - SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); - } - -+static void init_mime_types(HWND hDlg) -+{ -+ char *buf = get_reg_key(config_key, keypath("MIME-types"), "EnableFileAssociations", "Y"); -+ int state = IS_OPTION_TRUE(*buf) ? BST_CHECKED : BST_UNCHECKED; -+ -+ CheckDlgButton(hDlg, IDC_ENABLE_FILE_ASSOCIATIONS, state); -+ -+ HeapFree(GetProcessHeap(), 0, buf); -+} -+ -+static void update_mime_types(HWND hDlg) -+{ -+ const char *state = "Y"; -+ -+ if (IsDlgButtonChecked(hDlg, IDC_ENABLE_FILE_ASSOCIATIONS) != BST_CHECKED) -+ state = "N"; -+ -+ set_reg_key(config_key, keypath("MIME-types"), "EnableFileAssociations", state); -+} -+ - INT_PTR CALLBACK - ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) - { -@@ -1177,8 +1197,9 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) - init_shell_folder_listview_headers(hDlg); - update_shell_folder_listview(hDlg); - read_sysparams(hDlg); -+ init_mime_types(hDlg); - break; -- -+ - case WM_DESTROY: - free_theme_files(); - break; -@@ -1186,7 +1207,7 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) - case WM_SHOWWINDOW: - set_window_title(hDlg); - break; -- -+ - case WM_COMMAND: - switch(HIWORD(wParam)) { - case CBN_SELCHANGE: { -@@ -1296,6 +1317,10 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) - } - break; - } -+ -+ case IDC_ENABLE_FILE_ASSOCIATIONS: -+ update_mime_types(hDlg); -+ break; - } - break; - } -@@ -1314,6 +1339,7 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) - apply_sysparams(); - read_shell_folder_link_targets(); - update_shell_folder_listview(hDlg); -+ update_mime_types(hDlg); - SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); - break; - } -diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc -index 5908b49..d37a55e 100644 ---- a/programs/winecfg/winecfg.rc -+++ b/programs/winecfg/winecfg.rc -@@ -284,25 +284,29 @@ IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220 - STYLE WS_CHILD | WS_DISABLED - FONT 8, "MS Shell Dlg" - BEGIN -- GROUPBOX "Appearance",IDC_STATIC,8,4,244,106 -- LTEXT "&Theme:",IDC_STATIC,15,16,130,8 -- COMBOBOX IDC_THEME_THEMECOMBO,15,26,130,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -- PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,152,26,93,14 -- LTEXT "&Color:",IDC_THEME_COLORTEXT,15,48,105,8 -- COMBOBOX IDC_THEME_COLORCOMBO,15,58,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -- LTEXT "&Size:",IDC_THEME_SIZETEXT,126,48,120,8 -- COMBOBOX IDC_THEME_SIZECOMBO,126,58,120,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -- LTEXT "It&em:",IDC_STATIC,15,80,105,8 -- COMBOBOX IDC_SYSPARAM_COMBO,15,90,105,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT -- LTEXT "C&olor:",IDC_SYSPARAM_COLOR_TEXT,126,80,25,8,WS_DISABLED -- PUSHBUTTON "",IDC_SYSPARAM_COLOR,126,90,25,13,WS_DISABLED | BS_OWNERDRAW -- LTEXT "Si&ze:",IDC_SYSPARAM_SIZE_TEXT,157,80,30,8,WS_DISABLED -- EDITTEXT IDC_SYSPARAM_SIZE,157,90,30,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED -- CONTROL "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASSA,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | WS_DISABLED, 185,90,15,13 -- PUSHBUTTON "&Font...",IDC_SYSPARAM_FONT,190,90,55,13,WS_DISABLED -- GROUPBOX "Folders",IDC_STATIC,8,114,244,100 -+ GROUPBOX "Appearance",IDC_STATIC,8,4,244,90 -+ LTEXT "&Theme:",IDC_STATIC,15,15,130,8 -+ COMBOBOX IDC_THEME_THEMECOMBO,15,25,130,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -+ PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,152,25,93,13 -+ LTEXT "&Color:",IDC_THEME_COLORTEXT,15,40,105,8 -+ COMBOBOX IDC_THEME_COLORCOMBO,15,50,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -+ LTEXT "&Size:",IDC_THEME_SIZETEXT,126,40,120,8 -+ COMBOBOX IDC_THEME_SIZECOMBO,126,50,120,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -+ LTEXT "It&em:",IDC_STATIC,15,65,105,8 -+ COMBOBOX IDC_SYSPARAM_COMBO,15,75,105,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT -+ LTEXT "C&olor:",IDC_SYSPARAM_COLOR_TEXT,126,65,25,8,WS_DISABLED -+ PUSHBUTTON "",IDC_SYSPARAM_COLOR,126,75,25,13,WS_DISABLED | BS_OWNERDRAW -+ LTEXT "Si&ze:",IDC_SYSPARAM_SIZE_TEXT,157,65,30,8,WS_DISABLED -+ EDITTEXT IDC_SYSPARAM_SIZE,157,75,30,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED -+ CONTROL "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASSA,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | WS_DISABLED, 185,75,15,13 -+ -+ GROUPBOX "MIME types",IDC_STATIC,8,95,244,23 -+ CONTROL "Allow Wine to manage file &associations",IDC_ENABLE_FILE_ASSOCIATIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,105,230,8 -+ -+ PUSHBUTTON "&Font...",IDC_SYSPARAM_FONT,190,75,55,13,WS_DISABLED -+ GROUPBOX "Folders",IDC_STATIC,8,120,244,94 - CONTROL "",IDC_LIST_SFPATHS,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT | -- LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,126,230,64 -+ LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,132,230,58 - CONTROL "&Link to:",IDC_LINK_SFPATH,"Button",BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED,15,195,65,13 - EDITTEXT IDC_EDIT_SFPATH,80,195,110,13,ES_AUTOHSCROLL|WS_TABSTOP|WS_DISABLED - PUSHBUTTON "B&rowse...",IDC_BROWSE_SFPATH,195,195,50,13,WS_DISABLED -diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c -index 0013b04..dd69ff9 100644 ---- a/programs/winemenubuilder/winemenubuilder.c -+++ b/programs/winemenubuilder/winemenubuilder.c -@@ -104,6 +104,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(menubuilder); - #define in_startmenu(csidl) ((csidl)==CSIDL_STARTMENU || \ - (csidl)==CSIDL_COMMON_STARTMENU) - -+#define IS_OPTION_TRUE(ch) \ -+ ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1') -+ - /* link file formats */ - - #include "pshpack1.h" -@@ -3619,6 +3622,23 @@ static BOOL init_xdg(void) - return FALSE; - } - -+static BOOL associations_enabled(void) -+{ -+ BOOL ret = TRUE; -+ HKEY hkey; -+ BYTE buf[32]; -+ DWORD len; -+ -+ if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\MIME-types", &hkey)) -+ { -+ len = sizeof(buf); -+ if (!RegQueryValueExA(hkey, "EnableFileAssociations", NULL, NULL, buf, &len)) -+ ret = IS_OPTION_TRUE(buf[0]); -+ } -+ -+ return ret; -+} -+ - /*********************************************************************** - * - * wWinMain -@@ -3654,7 +3674,8 @@ int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE prev, LPWSTR cmdline, int sh - break; - if( !strcmpW( token, dash_aW ) ) - { -- RefreshFileTypeAssociations(); -+ if (associations_enabled()) -+ RefreshFileTypeAssociations(); - continue; - } - if( !strcmpW( token, dash_rW ) ) --- -1.9.1 - diff --git a/patches/ml-patches/0020-libwine-Use-getsegmentdata-3-on-Mac-OS-to-find-the-e.patch b/patches/ml-patches/0020-libwine-Use-getsegmentdata-3-on-Mac-OS-to-find-the-e.patch deleted file mode 100644 index 3262c938..00000000 --- a/patches/ml-patches/0020-libwine-Use-getsegmentdata-3-on-Mac-OS-to-find-the-e.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 1a3385427b0834c46a262959ed7da3f21b59d8bd Mon Sep 17 00:00:00 2001 -From: Chip Davis -Date: Wed, 1 Aug 2018 15:46:09 -0500 -Subject: [PATCH 20/24] libwine: Use getsegmentdata(3) on Mac OS to find the - end of the __TEXT segment. - -Don't assume it ends with the fake PE header. This assumption doesn't -hold on Mac OS: the __data section where it was placed is located after -several other sections, all in the __DATA segment. - -Unfortunately, this causes Wine, when DEP/NX is turned off, to override -the page protections for the start of the __DATA segment, removing write -permission from them, leading to a crash when winemac.drv attempted to -use an Objective-C class for the first time. - -Also, be sure to include the zero-fill (i.e. BSS) sections in the total -size of the .data section. This should fix some tests that use large -uninitialized arrays. - -Signed-off-by: Ken Thomases -Signed-off-by: Chip Davis ---- - libs/wine/loader.c | 19 ++++++++++++++++--- - 1 file changed, 16 insertions(+), 3 deletions(-) - -diff --git a/libs/wine/loader.c b/libs/wine/loader.c -index c07042a..0af3b8e 100644 ---- a/libs/wine/loader.c -+++ b/libs/wine/loader.c -@@ -49,6 +49,7 @@ - #undef LoadResource - #undef GetCurrentThread - #include -+#include - #else - extern char **environ; - #endif -@@ -387,11 +388,15 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) - IMAGE_NT_HEADERS *nt; - IMAGE_SECTION_HEADER *sec; - BYTE *addr; -- DWORD code_start, data_start, data_end; -+ DWORD code_start, code_end, data_start, data_end; - const size_t page_size = sysconf( _SC_PAGESIZE ); - const size_t page_mask = page_size - 1; - int delta, nb_sections = 2; /* code + data */ - unsigned int i; -+#ifdef __APPLE__ -+ Dl_info dli; -+ unsigned long data_size; -+#endif - - size_t size = (sizeof(IMAGE_DOS_HEADER) - + sizeof(IMAGE_NT_HEADERS) -@@ -425,7 +430,15 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) - delta = (const BYTE *)nt_descr - addr; - code_start = page_size; - data_start = delta & ~page_mask; -+#ifdef __APPLE__ -+ /* Need the mach_header, not the PE header, to give to getsegmentdata(3) */ -+ dladdr(addr, &dli); -+ code_end = getsegmentdata(dli.dli_fbase, "__DATA", &data_size) - addr; -+ data_end = (code_end + data_size + page_mask) & ~page_mask; -+#else -+ code_end = data_start; - data_end = (nt->OptionalHeader.SizeOfImage + delta + page_mask) & ~page_mask; -+#endif - - fixup_rva_ptrs( &nt->OptionalHeader.AddressOfEntryPoint, addr, 1 ); - -@@ -434,7 +447,7 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) - #ifndef _WIN64 - nt->OptionalHeader.BaseOfData = data_start; - #endif -- nt->OptionalHeader.SizeOfCode = data_start - code_start; -+ nt->OptionalHeader.SizeOfCode = code_end - code_start; - nt->OptionalHeader.SizeOfInitializedData = data_end - data_start; - nt->OptionalHeader.SizeOfUninitializedData = 0; - nt->OptionalHeader.SizeOfImage = data_end; -@@ -443,7 +456,7 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) - /* Build the code section */ - - memcpy( sec->Name, ".text", sizeof(".text") ); -- sec->SizeOfRawData = data_start - code_start; -+ sec->SizeOfRawData = code_end - code_start; - sec->Misc.VirtualSize = sec->SizeOfRawData; - sec->VirtualAddress = code_start; - sec->PointerToRawData = code_start; --- -1.9.1 - diff --git a/patches/ml-patches/0022-kernel32-Set-environment-variable-PUBLIC-on-the-proc.patch b/patches/ml-patches/0022-kernel32-Set-environment-variable-PUBLIC-on-the-proc.patch deleted file mode 100644 index 002392e0..00000000 --- a/patches/ml-patches/0022-kernel32-Set-environment-variable-PUBLIC-on-the-proc.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6d9aadecbafcd048702db67dab8c42cf6141712a Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Tue, 31 Jul 2018 18:57:59 +0800 -Subject: [PATCH 22/24] kernel32: Set environment variable %PUBLIC% on the - process start-up. - -This patch fixes an installer that has "[%PUBLIC]\Documents" entry -for some of the targets being copied from a cabinet file. Under -Windows %PUBLIC% environment variable is set to C:\Users\Public. - -Signed-off-by: Dmitry Timoshkov ---- - dlls/kernel32/process.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c -index 5aa245c..65b3091 100644 ---- a/dlls/kernel32/process.c -+++ b/dlls/kernel32/process.c -@@ -520,6 +520,7 @@ static void set_additional_environment(void) - static const WCHAR computernameW[] = {'C','O','M','P','U','T','E','R','N','A','M','E',0}; - static const WCHAR allusersW[] = {'A','L','L','U','S','E','R','S','P','R','O','F','I','L','E',0}; - static const WCHAR programdataW[] = {'P','r','o','g','r','a','m','D','a','t','a',0}; -+ static const WCHAR publicW[] = {'P','U','B','L','I','C',0}; - OBJECT_ATTRIBUTES attr; - UNICODE_STRING nameW; - WCHAR *profile_dir = NULL, *all_users_dir = NULL, *program_data_dir = NULL; -@@ -560,6 +561,7 @@ static void set_additional_environment(void) - if (p > value && p[-1] != '\\') *p++ = '\\'; - strcpyW( p, all_users_dir ); - SetEnvironmentVariableW( allusersW, value ); -+ SetEnvironmentVariableW( publicW, value ); - HeapFree( GetProcessHeap(), 0, value ); - } - --- -1.9.1 - diff --git a/patches/ml-patches/0028-cmd-Handle-quotes-when-parsing-the-folders-in-the-PA.patch b/patches/ml-patches/0028-cmd-Handle-quotes-when-parsing-the-folders-in-the-PA.patch deleted file mode 100644 index a8c01d60..00000000 --- a/patches/ml-patches/0028-cmd-Handle-quotes-when-parsing-the-folders-in-the-PA.patch +++ /dev/null @@ -1,113 +0,0 @@ -From bde1bbf224f90b5ca4cfddad918e3a096a6c3a05 Mon Sep 17 00:00:00 2001 -From: Fabian Maurer -Date: Thu, 2 Aug 2018 19:48:59 +0200 -Subject: [PATCH] cmd: Handle quotes when parsing the folders in the PATH - environment variable - -Semicolons are also allowed inside a path, -as long as they are quoted. - -Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45552 -Signed-off-by: Fabian Maurer ---- - programs/cmd/tests/test_builtins.cmd | 17 +++++++++++++++++ - programs/cmd/tests/test_builtins.cmd.exp | 3 +++ - programs/cmd/wcmdmain.c | 27 ++++++++++++++++++++++----- - 3 files changed, 42 insertions(+), 5 deletions(-) - -diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd -index b9e9b25..775f21b 100644 ---- a/programs/cmd/tests/test_builtins.cmd -+++ b/programs/cmd/tests/test_builtins.cmd -@@ -507,6 +507,23 @@ rem Only the final quote ends the string - set "WINE_FOO=apple"banana"grape"orange - echo '%WINE_FOO%' - set WINE_FOO= -+rem set PATH must work with quotes -+set PATH_BACKUP=%PATH% -+mkdir folder -+mkdir "fol;der" -+echo echo I'm here! > "fol;der\sub1.bat" -+echo echo I'm here! > folder\sub1.bat -+set PATH=nothing;"fol;der" -+call sub1 -+set PATH="folder -+call sub1 -+set PATH=folder" -+call sub1 -+del "fol;der\sub1.bat" -+del folder\sub1.bat -+rmdir "fol;der" -+rmdir folder -+PATH=%PATH_BACKUP% - - echo ------------ Testing variable expansion ------------ - call :setError 0 -diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp -index 3118359..ea4157c 100644 ---- a/programs/cmd/tests/test_builtins.cmd.exp -+++ b/programs/cmd/tests/test_builtins.cmd.exp -@@ -475,6 +475,9 @@ foo - 'jim fred' - 'jim' - 'apple"banana"grape' -+I'm here!@space@ -+I'm here!@space@ -+I'm here!@space@ - ------------ Testing variable expansion ------------ - ~p0 should be path containing batch file - @path@ -diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c -index 8fe2d57..5135be4 100644 ---- a/programs/cmd/wcmdmain.c -+++ b/programs/cmd/wcmdmain.c -@@ -1099,24 +1099,41 @@ void WCMD_run_program (WCHAR *command, BOOL called) - wine_dbgstr_w(stemofsearch)); - while (pathposn) { - WCHAR thisDir[MAX_PATH] = {'\0'}; -+ int length = 0; - WCHAR *pos = NULL; - BOOL found = FALSE; -+ BOOL inside_quotes = FALSE; - - /* Work on the first directory on the search path */ -- pos = strchrW(pathposn, ';'); -- if (pos) { -+ pos = pathposn; -+ while ((inside_quotes || *pos != ';') && *pos != 0) -+ { -+ if (*pos == '"') -+ inside_quotes = !inside_quotes; -+ pos++; -+ } -+ -+ if (*pos) { /* Reached semicolon */ - memcpy(thisDir, pathposn, (pos-pathposn) * sizeof(WCHAR)); - thisDir[(pos-pathposn)] = 0x00; - pathposn = pos+1; -- -- } else { -+ } else { /* Reached string end */ - strcpyW(thisDir, pathposn); - pathposn = NULL; - } - -+ /* Remove quotes */ -+ length = strlenW(thisDir); -+ if (thisDir[length - 1] == '"') -+ thisDir[length - 1] = 0; -+ -+ if (*thisDir != '"') -+ strcpyW(temp, thisDir); -+ else -+ strcpyW(temp, thisDir + 1); -+ - /* Since you can have eg. ..\.. on the path, need to expand - to full information */ -- strcpyW(temp, thisDir); - GetFullPathNameW(temp, MAX_PATH, thisDir, NULL); - - /* 1. If extension supplied, see if that file exists */ --- -1.9.1 - diff --git a/patches/ntdll-LdrInitializeThunk/definition b/patches/ntdll-LdrInitializeThunk/definition index 425bd73e..a2ce2996 100644 --- a/patches/ntdll-LdrInitializeThunk/definition +++ b/patches/ntdll-LdrInitializeThunk/definition @@ -1 +1,2 @@ -Fixes: [45570] League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of LdrInitializeThunk) \ No newline at end of file +Fixes: [45570] League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of LdrInitializeThunk) +Depends: advapi32-Token_Integrity_Level \ No newline at end of file diff --git a/patches/ntdll-NtContinue/definition b/patches/ntdll-NtContinue/definition index 67a3bed1..2fc99d6a 100644 --- a/patches/ntdll-NtContinue/definition +++ b/patches/ntdll-NtContinue/definition @@ -1,2 +1,2 @@ Fixes: [31910] Add stub for NtContinue -Fixes: [45327] Helps League of Legends anti-cheat engine. +Fixes: [45572] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtContinue) diff --git a/patches/ntdll-NtQueryInformationProcess-ProcessCookie/definition b/patches/ntdll-NtQueryInformationProcess-ProcessCookie/definition index 79281ad6..93203f06 100644 --- a/patches/ntdll-NtQueryInformationProcess-ProcessCookie/definition +++ b/patches/ntdll-NtQueryInformationProcess-ProcessCookie/definition @@ -1 +1 @@ -Fixes: [45327] Added support ProcessCookie in NtQueryInformationProcess +Fixes: [45569] League of Legends 8.12+ needs NtQueryInformationProcess(ProcessCookie) stub diff --git a/patches/ntdll-RtlSetUnhandledExceptionFilter/definition b/patches/ntdll-RtlSetUnhandledExceptionFilter/definition index 9a132f96..25cdbcac 100644 --- a/patches/ntdll-RtlSetUnhandledExceptionFilter/definition +++ b/patches/ntdll-RtlSetUnhandledExceptionFilter/definition @@ -1 +1 @@ -Fixes: [45327] Add RtlSetUnhandledExceptionFilter stub +Fixes: [45566] League of Legends 8.12+ needs ntdll.RtlSetUnhandledExceptionFilter stub diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index d2d67ea5..b200d29d 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "d744f367d263a131feee96e103fb8220e8400b53" + echo "ccf6211c0ae6e86218f7e6c1f2fe725a23e568b9" } # Show version information @@ -164,7 +164,6 @@ patch_enable_all () enable_inseng_Implementation="$1" enable_iphlpapi_System_Ping="$1" enable_iphlpapi_TCP_Table="$1" - enable_kernel32_AttachConsole="$1" enable_kernel32_COMSPEC="$1" enable_kernel32_CopyFileEx="$1" enable_kernel32_Cwd_Startup_Info="$1" @@ -187,7 +186,6 @@ patch_enable_all () enable_libs_Debug_Channel="$1" enable_libs_Unicode_Collation="$1" enable_loader_OSX_Preloader="$1" - enable_ml_patches="$1" enable_mmsystem_dll16_MIDIHDR_Refcount="$1" enable_mountmgr_DosDevices="$1" enable_mscoree_CorValidateImage="$1" @@ -289,7 +287,6 @@ patch_enable_all () enable_server_Misc_ACL="$1" enable_server_Object_Types="$1" enable_server_PeekMessage="$1" - enable_server_Pipe_ObjectName="$1" enable_server_Realtime_Priority="$1" enable_server_Registry_Notifications="$1" enable_server_Shared_Memory="$1" @@ -299,7 +296,6 @@ patch_enable_all () enable_server_device_manager_destroy="$1" enable_server_send_hardware_message="$1" enable_setupapi_DiskSpaceList="$1" - enable_setupapi_Display_Device="$1" enable_setupapi_HSPFILEQ_Check_Type="$1" enable_setupapi_SPFILENOTIFY_FILEINCABINET="$1" enable_setupapi_SP_COPY_IN_USE_NEEDS_REBOOT="$1" @@ -672,9 +668,6 @@ patch_enable () iphlpapi-TCP_Table) enable_iphlpapi_TCP_Table="$2" ;; - kernel32-AttachConsole) - enable_kernel32_AttachConsole="$2" - ;; kernel32-COMSPEC) enable_kernel32_COMSPEC="$2" ;; @@ -741,9 +734,6 @@ patch_enable () loader-OSX_Preloader) enable_loader_OSX_Preloader="$2" ;; - ml-patches) - enable_ml_patches="$2" - ;; mmsystem.dll16-MIDIHDR_Refcount) enable_mmsystem_dll16_MIDIHDR_Refcount="$2" ;; @@ -1047,9 +1037,6 @@ patch_enable () server-PeekMessage) enable_server_PeekMessage="$2" ;; - server-Pipe_ObjectName) - enable_server_Pipe_ObjectName="$2" - ;; server-Realtime_Priority) enable_server_Realtime_Priority="$2" ;; @@ -1077,9 +1064,6 @@ patch_enable () setupapi-DiskSpaceList) enable_setupapi_DiskSpaceList="$2" ;; - setupapi-Display_Device) - enable_setupapi_Display_Device="$2" - ;; setupapi-HSPFILEQ_Check_Type) enable_setupapi_HSPFILEQ_Check_Type="$2" ;; @@ -1988,13 +1972,6 @@ if test "$enable_server_Realtime_Priority" -eq 1; then enable_ntdll_ThreadTime=1 fi -if test "$enable_server_Pipe_ObjectName" -eq 1; then - if test "$enable_server_Desktop_Refcount" -gt 1; then - abort "Patchset server-Desktop_Refcount disabled, but server-Pipe_ObjectName depends on that." - fi - enable_server_Desktop_Refcount=1 -fi - if test "$enable_server_Object_Types" -eq 1; then if test "$enable_server_Misc_ACL" -gt 1; then abort "Patchset server-Misc_ACL disabled, but server-Object_Types depends on that." @@ -2138,6 +2115,13 @@ if test "$enable_ntdll_NtDevicePath" -eq 1; then enable_ntdll_Pipe_SpecialCharacters=1 fi +if test "$enable_ntdll_LdrInitializeThunk" -eq 1; then + if test "$enable_advapi32_Token_Integrity_Level" -gt 1; then + abort "Patchset advapi32-Token_Integrity_Level disabled, but ntdll-LdrInitializeThunk depends on that." + fi + enable_advapi32_Token_Integrity_Level=1 +fi + if test "$enable_ntdll_Junction_Points" -eq 1; then if test "$enable_ntdll_NtQueryEaFile" -gt 1; then abort "Patchset ntdll-NtQueryEaFile disabled, but ntdll-Junction_Points depends on that." @@ -2266,6 +2250,13 @@ if test "$enable_d3dx9_36_DXTn" -eq 1; then enable_wined3d_DXTn=1 fi +if test "$enable_wined3d_DXTn" -eq 1; then + if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -gt 1; then + abort "Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM disabled, but wined3d-DXTn depends on that." + fi + enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM=1 +fi + if test "$enable_d3d11_Deferred_Context" -eq 1; then if test "$enable_nvapi_Stub_DLL" -gt 1; then abort "Patchset nvapi-Stub_DLL disabled, but d3d11-Deferred_Context depends on that." @@ -2328,13 +2319,6 @@ if test "$enable_advapi32_LsaLookupSids" -eq 1; then enable_server_Misc_ACL=1 fi -if test "$enable_Compiler_Warnings" -eq 1; then - if test "$enable_ml_patches" -gt 1; then - abort "Patchset ml-patches disabled, but Compiler_Warnings depends on that." - fi - enable_ml_patches=1 -fi - # If autoupdate is enabled then create a tempfile to keep track of all patches if test "$enable_patchlist" -eq 1; then @@ -2351,31 +2335,8 @@ if test "$enable_patchlist" -eq 1; then fi -# Patchset ml-patches -# | -# | Modified files: -# | * dlls/kernel32/process.c, libs/wine/loader.c, programs/cmd/tests/test_builtins.cmd, -# | programs/cmd/tests/test_builtins.cmd.exp, programs/cmd/wcmdmain.c, programs/winecfg/resource.h, -# | programs/winecfg/theme.c, programs/winecfg/winecfg.rc, programs/winemenubuilder/winemenubuilder.c -# | -if test "$enable_ml_patches" -eq 1; then - patch_apply ml-patches/0008-programs-Allow-to-disable-MIME-type-associations.patch - patch_apply ml-patches/0020-libwine-Use-getsegmentdata-3-on-Mac-OS-to-find-the-e.patch - patch_apply ml-patches/0022-kernel32-Set-environment-variable-PUBLIC-on-the-proc.patch - patch_apply ml-patches/0028-cmd-Handle-quotes-when-parsing-the-folders-in-the-PA.patch - ( - printf '%s\n' '+ { "Dmitry Timoshkov", "programs: Allow to disable MIME-type associations.", 1 },'; - printf '%s\n' '+ { "Chip Davis", "libwine: Use getsegmentdata(3) on Mac OS to find the end of the __TEXT segment.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "kernel32: Set environment variable %PUBLIC% on the process start-up.", 1 },'; - printf '%s\n' '+ { "Fabian Maurer", "cmd: Handle quotes when parsing the folders in the PATH environment variable.", 1 },'; - ) >> "$patchlist" -fi - # Patchset Compiler_Warnings # | -# | This patchset has the following (direct or indirect) dependencies: -# | * ml-patches -# | # | Modified files: # | * dlls/amstream/mediastreamfilter.c, dlls/d2d1/brush.c, dlls/d2d1/geometry.c, dlls/d3d11/view.c, dlls/d3d8/texture.c, # | dlls/d3d9/tests/visual.c, dlls/d3d9/texture.c, dlls/ddraw/viewport.c, dlls/dwrite/font.c, dlls/dwrite/layout.c, @@ -3271,8 +3232,26 @@ if test "$enable_d3dx9_36_DDS" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM +# | +# | This patchset fixes the following Wine bugs: +# | * [#44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion +# | +# | Modified files: +# | * dlls/wined3d/surface.c +# | +if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -eq 1; then + patch_apply wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch + ( + printf '%s\n' '+ { "Stanislav Zhukov", "wined3d: Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-DXTn # | +# | This patchset has the following (direct or indirect) dependencies: +# | * wined3d-WINED3DFMT_B8G8R8X8_UNORM +# | # | This patchset fixes the following Wine bugs: # | * [#25486] Lego Stunt Rally requires DXTn software de/encoding support # | * [#29586] Tumblebugs 2 requires DXTn software encoding support @@ -3280,7 +3259,7 @@ fi # | # | Modified files: # | * dlls/wined3d/Makefile.in, dlls/wined3d/dxtn.c, dlls/wined3d/dxtn.h, dlls/wined3d/surface.c, dlls/wined3d/wined3d.spec, -# | dlls/wined3d/wined3d_main.c, include/wine/wined3d.h +# | include/wine/wined3d.h # | if test "$enable_wined3d_DXTn" -eq 1; then patch_apply wined3d-DXTn/0001-wined3d-add-DXTn-support.patch @@ -3292,7 +3271,7 @@ fi # Patchset d3dx9_36-DXTn # | # | This patchset has the following (direct or indirect) dependencies: -# | * wined3d-DXTn +# | * wined3d-WINED3DFMT_B8G8R8X8_UNORM, wined3d-DXTn # | # | This patchset fixes the following Wine bugs: # | * [#33768] Fix texture corruption in CSI: Fatal Conspiracy @@ -3599,7 +3578,7 @@ fi # Patchset dinput8-shared-code # | # | This patchset fixes the following Wine bugs: -# | * [#45327] Stop access volation in League of Legends +# | * [#45568] League of Legends 8.12+ fails to start a game (anticheat engine, validation of loaded DLLs) # | # | Modified files: # | * dlls/dinput/Makefile.in, dlls/dinput/dinput_main.c, dlls/dinput8/Makefile.in, dlls/dinput8/dinput8_main.c @@ -4040,7 +4019,7 @@ fi # | * [#8332] Fallback to system ping command when CAP_NET_RAW is not available # | # | Modified files: -# | * dlls/iphlpapi/icmp.c, dlls/iphlpapi/tests/iphlpapi.c +# | * dlls/iphlpapi/icmp.c # | if test "$enable_iphlpapi_System_Ping" -eq 1; then patch_apply iphlpapi-System_Ping/0001-iphlpapi-Fallback-to-system-ping-when-ICMP-permissio.patch @@ -4064,22 +4043,6 @@ if test "$enable_iphlpapi_TCP_Table" -eq 1; then ) >> "$patchlist" fi -# Patchset kernel32-AttachConsole -# | -# | This patchset fixes the following Wine bugs: -# | * [#41573] AttachConsole implementation. -# | * [#43910] "Battle.net helper.exe" [NOT BLIZZARD APP!] crashes with Win 7 or higher -# | -# | Modified files: -# | * dlls/kernel32/console.c, dlls/kernel32/tests/console.c, server/console.c, server/protocol.def -# | -if test "$enable_kernel32_AttachConsole" -eq 1; then - patch_apply kernel32-AttachConsole/0001-kernel32-Add-AttachConsole-implementation.patch - ( - printf '%s\n' '+ { "Jacek Caban", "kernel32: Add AttachConsole implementation.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-File_Permissions # | # | This patchset fixes the following Wine bugs: @@ -5107,6 +5070,10 @@ fi # Patchset ntdll-LdrInitializeThunk # | +# | This patchset has the following (direct or indirect) dependencies: +# | * Staging, advapi32-CreateRestrictedToken, kernel32-COMSPEC, server-CreateProcess_ACLs, server-Misc_ACL, +# | advapi32-Token_Integrity_Level +# | # | This patchset fixes the following Wine bugs: # | * [#45570] League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of # | LdrInitializeThunk) @@ -5139,7 +5106,7 @@ fi # | # | This patchset fixes the following Wine bugs: # | * [#31910] Add stub for NtContinue -# | * [#45327] Helps League of Legends anti-cheat engine. +# | * [#45572] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtContinue) # | # | Modified files: # | * dlls/ntdll/exception.c, dlls/ntdll/ntdll.spec, dlls/ntdll/signal_i386.c @@ -5189,7 +5156,7 @@ fi # Patchset ntdll-NtQueryInformationProcess-ProcessCookie # | # | This patchset fixes the following Wine bugs: -# | * [#45327] Added support ProcessCookie in NtQueryInformationProcess +# | * [#45569] League of Legends 8.12+ needs NtQueryInformationProcess(ProcessCookie) stub # | # | Modified files: # | * dlls/ntdll/process.c @@ -5324,7 +5291,8 @@ fi # Patchset ntdll-RtlCreateUserThread # | # | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-LdrInitializeThunk +# | * Staging, advapi32-CreateRestrictedToken, kernel32-COMSPEC, server-CreateProcess_ACLs, server-Misc_ACL, +# | advapi32-Token_Integrity_Level, ntdll-LdrInitializeThunk # | # | This patchset fixes the following Wine bugs: # | * [#45571] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtCreateThread/Ex) @@ -5372,7 +5340,7 @@ fi # Patchset ntdll-RtlSetUnhandledExceptionFilter # | # | This patchset fixes the following Wine bugs: -# | * [#45327] Add RtlSetUnhandledExceptionFilter stub +# | * [#45566] League of Legends 8.12+ needs ntdll.RtlSetUnhandledExceptionFilter stub # | # | Modified files: # | * dlls/ntdll/exception.c, dlls/ntdll/ntdll.spec @@ -5592,7 +5560,7 @@ fi # Patchset ntoskrnl-Stubs # | # | This patchset has the following (direct or indirect) dependencies: -# | * ml-patches, Compiler_Warnings +# | * Compiler_Warnings # | # | Modified files: # | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, dlls/ntoskrnl.exe/tests/driver.c, include/ddk/wdm.h, @@ -6204,21 +6172,6 @@ if test "$enable_server_Object_Types" -eq 1; then ) >> "$patchlist" fi -# Patchset server-Pipe_ObjectName -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * server-Desktop_Refcount -# | -# | Modified files: -# | * dlls/ntdll/tests/om.c, server/named_pipe.c, server/object.c, server/object.h -# | -if test "$enable_server_Pipe_ObjectName" -eq 1; then - patch_apply server-Pipe_ObjectName/0001-server-Store-a-reference-to-the-parent-object-for-pi.patch - ( - printf '%s\n' '+ { "Sebastian Lackner", "server: Store a reference to the parent object for pipe servers.", 2 },'; - ) >> "$patchlist" -fi - # Patchset server-Realtime_Priority # | # | This patchset has the following (direct or indirect) dependencies: @@ -6310,25 +6263,6 @@ if test "$enable_setupapi_DiskSpaceList" -eq 1; then ) >> "$patchlist" fi -# Patchset setupapi-Display_Device -# | -# | This patchset fixes the following Wine bugs: -# | * [#35345] Fix enumeration of display driver properties using setupapi -# | -# | Modified files: -# | * dlls/setupapi/devinst.c, dlls/setupapi/tests/devinst.c, loader/wine.inf.in -# | -if test "$enable_setupapi_Display_Device" -eq 1; then - patch_apply setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch - patch_apply setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch - patch_apply setupapi-Display_Device/0003-setupapi-Also-create-HardwareId-registry-key-for-dis.patch - ( - printf '%s\n' '+ { "Michael Müller", "setupapi: Create registry keys for display devices and display drivers.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "setupapi: Handle the case that a full driver path is passed to SetupDiGetClassDevs.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "setupapi: Also create HardwareId registry key for display devices.", 1 },'; - ) >> "$patchlist" -fi - # Patchset setupapi-HSPFILEQ_Check_Type # | # | This patchset fixes the following Wine bugs: @@ -7675,8 +7609,9 @@ fi # Patchset wined3d-CSMT_Main # | # | This patchset has the following (direct or indirect) dependencies: -# | * nvcuda-CUDA_Support, nvapi-Stub_DLL, d3d11-Deferred_Context, d3d9-Tests, wined3d-Accounting, wined3d-DXTn, wined3d- -# | Dual_Source_Blending, wined3d-QUERY_Stubs, wined3d-Silence_FIXMEs, wined3d-UAV_Counters +# | * nvcuda-CUDA_Support, nvapi-Stub_DLL, d3d11-Deferred_Context, d3d9-Tests, wined3d-Accounting, wined3d- +# | WINED3DFMT_B8G8R8X8_UNORM, wined3d-DXTn, wined3d-Dual_Source_Blending, wined3d-QUERY_Stubs, wined3d-Silence_FIXMEs, +# | wined3d-UAV_Counters # | # | Modified files: # | * dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/view.c, dlls/wined3d/wined3d_private.h @@ -7744,21 +7679,6 @@ if test "$enable_wined3d_Indexed_Vertex_Blending" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM -# | -# | This patchset fixes the following Wine bugs: -# | * [#44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion -# | -# | Modified files: -# | * dlls/wined3d/surface.c -# | -if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -eq 1; then - patch_apply wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch - ( - printf '%s\n' '+ { "Stanislav Zhukov", "wined3d: Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion.", 1 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-wined3d_guess_gl_vendor # | # | This patchset fixes the following Wine bugs: @@ -7789,7 +7709,7 @@ fi # Patchset winedevice-Default_Drivers # | # | This patchset has the following (direct or indirect) dependencies: -# | * dxva2-Video_Decoder, ml-patches, Compiler_Warnings, ntoskrnl-Stubs +# | * dxva2-Video_Decoder, Compiler_Warnings, ntoskrnl-Stubs # | # | Modified files: # | * configure.ac, dlls/dxgkrnl.sys/Makefile.in, dlls/dxgkrnl.sys/dxgkrnl.sys.spec, dlls/dxgkrnl.sys/main.c, diff --git a/patches/server-Pipe_ObjectName/definition b/patches/server-Pipe_ObjectName/definition index 13393a8e..5d6ad8c2 100644 --- a/patches/server-Pipe_ObjectName/definition +++ b/patches/server-Pipe_ObjectName/definition @@ -1,3 +1,7 @@ Fixes: Report correct ObjectName for NamedPipe wineserver objects # Depends: kernel32-Named_Pipe Depends: server-Desktop_Refcount +# 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 diff --git a/patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch b/patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch index c42fcc2b..085cd9f5 100644 --- a/patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch +++ b/patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch @@ -1,4 +1,4 @@ -From 79cc09b9e1b952772d33335518267dcabb927b01 Mon Sep 17 00:00:00 2001 +From f32342b9bb7bae0e42b79e61f29ab25d9f6b2873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 11 Feb 2016 03:17:09 +0100 Subject: setupapi: Create registry keys for display devices and display @@ -10,10 +10,10 @@ Subject: setupapi: Create registry keys for display devices and display 2 files changed, 101 insertions(+), 12 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c -index 318dcdf..fc53c31 100644 +index 9f77669..74a8e2b 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c -@@ -90,6 +90,15 @@ static const WCHAR LowerFilters[] = {'L','o','w','e','r','F','i','l','t','e','r' +@@ -92,6 +92,15 @@ static const WCHAR LowerFilters[] = {'L','o','w','e','r','F','i','l','t','e','r' static const WCHAR Phantom[] = {'P','h','a','n','t','o','m',0}; static const WCHAR SymbolicLink[] = {'S','y','m','b','o','l','i','c','L','i','n','k',0}; @@ -29,8 +29,8 @@ index 318dcdf..fc53c31 100644 /* is used to identify if a DeviceInfoSet pointer is valid or not */ #define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff056 -@@ -140,6 +149,90 @@ struct DeviceInfo - struct list interfaces; +@@ -127,6 +136,90 @@ struct device_iface + struct list entry; }; +static void create_display_keys(HKEY enumKey, int index, DISPLAY_DEVICEW *disp) @@ -117,10 +117,10 @@ index 318dcdf..fc53c31 100644 + return ERROR_SUCCESS; +} + - static void SETUPDI_GuidToString(const GUID *guid, LPWSTR guidStr) + static inline void copy_device_data(SP_DEVINFO_DATA *data, const struct device *device) { - static const WCHAR fmt[] = {'{','%','0','8','X','-','%','0','4','X','-', -@@ -420,8 +513,7 @@ static HKEY SETUPDI_CreateDevKey(struct DeviceInfo *devInfo) + data->ClassGuid = device->class; +@@ -393,8 +486,7 @@ static HKEY SETUPDI_CreateDevKey(struct device *device) HKEY enumKey, key = INVALID_HANDLE_VALUE; LONG l; @@ -129,8 +129,8 @@ index 318dcdf..fc53c31 100644 + l = open_enum_key(&enumKey); if (!l) { - RegCreateKeyExW(enumKey, devInfo->instanceId, 0, NULL, 0, -@@ -509,8 +601,7 @@ static void SETUPDI_FreeDeviceInfo(struct DeviceInfo *devInfo) + RegCreateKeyExW(enumKey, device->instanceId, 0, NULL, 0, +@@ -486,8 +578,7 @@ static void SETUPDI_RemoveDevice(struct device *device) HKEY enumKey; LONG l; @@ -139,8 +139,8 @@ index 318dcdf..fc53c31 100644 + l = open_enum_key(&enumKey); if (!l) { - RegDeleteTreeW(enumKey, devInfo->instanceId); -@@ -2036,8 +2127,7 @@ static void SETUPDI_EnumerateMatchingInterfaces(HDEVINFO DeviceInfoSet, + RegDeleteTreeW(enumKey, device->instanceId); +@@ -2012,8 +2103,7 @@ static void SETUPDI_EnumerateMatchingInterfaces(HDEVINFO DeviceInfoSet, TRACE("%s\n", debugstr_w(enumstr)); @@ -150,7 +150,7 @@ index 318dcdf..fc53c31 100644 for (i = 0; !l; i++) { len = sizeof(subKeyName) / sizeof(subKeyName[0]); -@@ -2265,8 +2355,7 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class, +@@ -2239,8 +2329,7 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class, TRACE("%p, %s, %s, %08x\n", DeviceInfoSet, debugstr_guid(class), debugstr_w(enumstr), flags); @@ -160,7 +160,7 @@ index 318dcdf..fc53c31 100644 if (enumKey != INVALID_HANDLE_VALUE) { if (enumstr) -@@ -3717,8 +3806,7 @@ static HKEY SETUPDI_OpenDevKey(struct DeviceInfo *devInfo, REGSAM samDesired) +@@ -3580,8 +3669,7 @@ static HKEY SETUPDI_OpenDevKey(struct device *device, REGSAM samDesired) HKEY enumKey, key = INVALID_HANDLE_VALUE; LONG l; @@ -169,8 +169,8 @@ index 318dcdf..fc53c31 100644 + l = open_enum_key(&enumKey); if (!l) { - RegOpenKeyExW(enumKey, devInfo->instanceId, 0, samDesired, &key); -@@ -3834,8 +3922,7 @@ static BOOL SETUPDI_DeleteDevKey(struct DeviceInfo *devInfo) + RegOpenKeyExW(enumKey, device->instanceId, 0, samDesired, &key); +@@ -3697,8 +3785,7 @@ static BOOL SETUPDI_DeleteDevKey(struct device *device) BOOL ret = FALSE; LONG l; @@ -179,12 +179,12 @@ index 318dcdf..fc53c31 100644 + l = open_enum_key(&enumKey); if (!l) { - ret = RegDeleteTreeW(enumKey, devInfo->instanceId); + ret = RegDeleteTreeW(enumKey, device->instanceId); diff --git a/loader/wine.inf.in b/loader/wine.inf.in -index d22b29b..48083b8 100644 +index 79ac6c5..2a2313e 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in -@@ -443,6 +443,8 @@ HKLM,System\CurrentControlSet\Control\ContentIndex\Language\Neutral,"Locale",0x1 +@@ -465,6 +465,8 @@ HKLM,System\CurrentControlSet\Control\ContentIndex\Language\Neutral,"Locale",0x1 [ControlClass] HKLM,System\CurrentControlSet\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318},,,"Disk drives" HKLM,System\CurrentControlSet\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318},"Class",,"DiskDrive" @@ -194,5 +194,5 @@ index d22b29b..48083b8 100644 HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},"Class",,"Ports" HKLM,System\CurrentControlSet\Control\Class\{6bdd1fc6-810f-11d0-bec7-08002be2092f},,,"Imaging devices" -- -2.7.1 +2.7.4 diff --git a/patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch b/patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch index 039a5bf0..bd51dd8d 100644 --- a/patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch +++ b/patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch @@ -1,4 +1,4 @@ -From 29e1247c38bc714ea74e624821381091d4ea4bf0 Mon Sep 17 00:00:00 2001 +From 8a2cfa7797641f79216ab21b6e027f908879c2a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 11 Feb 2016 03:20:33 +0100 Subject: setupapi: Handle the case that a full driver path is passed to @@ -10,10 +10,10 @@ Subject: setupapi: Handle the case that a full driver path is passed to 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c -index e6a6272..e3cc257 100644 +index 74a8e2b..4291c09 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c -@@ -2376,8 +2376,30 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class, +@@ -2340,8 +2340,30 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class, &enumStrKey); if (!l) { @@ -47,11 +47,11 @@ index e6a6272..e3cc257 100644 } } diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c -index 6ca0e92..b1f1d04 100644 +index 9a8ecbc..d2b1500 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c -@@ -1347,6 +1347,28 @@ static void testSetupDiGetINFClassA(void) - } +@@ -1430,6 +1430,28 @@ static void test_device_interface_key(void) + SetupDiDestroyDeviceInfoList(set); } +static void testSetupDiGetClassDevsA(void) @@ -79,12 +79,14 @@ index 6ca0e92..b1f1d04 100644 START_TEST(devinst) { HKEY hkey; -@@ -1384,4 +1406,5 @@ START_TEST(devinst) +@@ -1467,6 +1489,7 @@ START_TEST(devinst) testDeviceRegistryPropertyA(); testDeviceRegistryPropertyW(); testSetupDiGetINFClassA(); + testSetupDiGetClassDevsA(); + test_devnode(); + test_device_interface_key(); } -- -2.9.0 +2.7.4 diff --git a/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0002-setupapi-SetupDiGetDeviceInterfaceDetail-should-fill.patch b/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0002-setupapi-SetupDiGetDeviceInterfaceDetail-should-fill.patch index 6d66f490..1880c6b7 100644 --- a/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0002-setupapi-SetupDiGetDeviceInterfaceDetail-should-fill.patch +++ b/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0002-setupapi-SetupDiGetDeviceInterfaceDetail-should-fill.patch @@ -1,59 +1,65 @@ -From 687fc3ff0c5ea37f782bd0f02c7fe856cab583a5 Mon Sep 17 00:00:00 2001 +From e9a6546ce13c09f63a180aceb7181d8145c120d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Fri, 19 Aug 2016 00:47:08 +0200 Subject: setupapi: SetupDiGetDeviceInterfaceDetail should fill out DeviceInfoData even if the buffer for DeviceInterfaceData is too small. --- - dlls/setupapi/devinst.c | 8 ++++---- - dlls/setupapi/tests/devinst.c | 6 +++++- - 2 files changed, 9 insertions(+), 5 deletions(-) + dlls/setupapi/devinst.c | 14 ++++++++------ + dlls/setupapi/tests/devinst.c | 6 +++++- + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c -index 02e75b6..4dac40d 100644 +index 9f77669..f8c347b 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c -@@ -2956,8 +2956,6 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailA( - NULL, NULL); +@@ -2844,9 +2844,6 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailA( else DeviceInterfaceDetailData->DevicePath[0] = '\0'; -- if (DeviceInfoData && DeviceInfoData->cbSize == sizeof(SP_DEVINFO_DATA)) -- *DeviceInfoData = *info->device; + +- if (device_data && device_data->cbSize == sizeof(SP_DEVINFO_DATA)) +- copy_device_data(device_data, iface->device); +- ret = TRUE; } else -@@ -2966,6 +2964,8 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailA( +@@ -2855,6 +2852,10 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailA( *RequiredSize = bytesNeeded; SetLastError(ERROR_INSUFFICIENT_BUFFER); } -+ if (DeviceInfoData && DeviceInfoData->cbSize == sizeof(SP_DEVINFO_DATA)) -+ *DeviceInfoData = *info->device; ++ ++ if (device_data && device_data->cbSize == sizeof(SP_DEVINFO_DATA)) ++ copy_device_data(device_data, iface->device); ++ return ret; } -@@ -3024,8 +3024,6 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW( - lstrcpyW(DeviceInterfaceDetailData->DevicePath, info->symbolicLink); +@@ -2914,9 +2915,6 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW( else DeviceInterfaceDetailData->DevicePath[0] = '\0'; -- if (DeviceInfoData && DeviceInfoData->cbSize == sizeof(SP_DEVINFO_DATA)) -- *DeviceInfoData = *info->device; + +- if (device_data && device_data->cbSize == sizeof(SP_DEVINFO_DATA)) +- copy_device_data(device_data, iface->device); +- ret = TRUE; } else -@@ -3034,6 +3032,8 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW( +@@ -2925,6 +2923,10 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW( *RequiredSize = bytesNeeded; SetLastError(ERROR_INSUFFICIENT_BUFFER); } -+ if (DeviceInfoData && DeviceInfoData->cbSize == sizeof(SP_DEVINFO_DATA)) -+ *DeviceInfoData = *info->device; ++ ++ if (device_data && device_data->cbSize == sizeof(SP_DEVINFO_DATA)) ++ copy_device_data(device_data, iface->device); ++ return ret; } diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c -index 319bb31..d349917 100644 +index 9a8ecbc..187e022 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c -@@ -833,6 +833,7 @@ static void testGetDeviceInterfaceDetail(void) +@@ -674,6 +674,7 @@ static void testGetDeviceInterfaceDetail(void) "\\\\?\\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}"; static const char path_w2k[] = "\\\\?\\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}\\"; @@ -61,7 +67,7 @@ index 319bb31..d349917 100644 LPBYTE buf = HeapAlloc(GetProcessHeap(), 0, size); SP_DEVICE_INTERFACE_DETAIL_DATA_A *detail = (SP_DEVICE_INTERFACE_DETAIL_DATA_A *)buf; -@@ -860,9 +861,12 @@ static void testGetDeviceInterfaceDetail(void) +@@ -701,9 +702,12 @@ static void testGetDeviceInterfaceDetail(void) !lstrcmpiA(path_w2k, detail->DevicePath), "Unexpected path %s\n", detail->DevicePath); /* Check SetupDiGetDeviceInterfaceDetailW */ @@ -76,5 +82,5 @@ index 319bb31..d349917 100644 (expectedsize + sizeof(WCHAR)) == size /* W2K adds a backslash */, "SetupDiGetDeviceInterfaceDetailW returned wrong reqsize, got %d\n", -- -2.9.0 +2.7.4 diff --git a/patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch b/patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch index fc2f7284..dc8af493 100644 --- a/patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch +++ b/patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch @@ -1,17 +1,16 @@ -From 7dd189fb2256e64540fce8dfddc499ce41e01675 Mon Sep 17 00:00:00 2001 +From e1402515ec1008c3393d434a1016a717c791bd62 Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Fri, 30 Mar 2018 08:25:44 +0000 Subject: [PATCH] wined3d: add DXTn support --- - dlls/wined3d/Makefile.in | 1 + - dlls/wined3d/dxtn.c | 435 +++++++++++++++++++ - dlls/wined3d/dxtn.h | 987 ++++++++++++++++++++++++++++++++++++++++++++ - dlls/wined3d/surface.c | 153 +++++++ - dlls/wined3d/wined3d.spec | 7 + - dlls/wined3d/wined3d_main.c | 1 + - include/wine/wined3d.h | 13 + - 7 files changed, 1597 insertions(+) + dlls/wined3d/Makefile.in | 1 + + dlls/wined3d/dxtn.c | 435 ++++++++++++++++++++ + dlls/wined3d/dxtn.h | 987 ++++++++++++++++++++++++++++++++++++++++++++++ + dlls/wined3d/surface.c | 153 +++++++ + dlls/wined3d/wined3d.spec | 7 + + include/wine/wined3d.h | 13 + + 6 files changed, 1596 insertions(+) create mode 100644 dlls/wined3d/dxtn.c create mode 100644 dlls/wined3d/dxtn.h @@ -1462,10 +1461,10 @@ index 0000000..23536c0 + } +} diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 5502d05..d75dbdb 100644 +index ba0b647..30421b9 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -800,6 +800,126 @@ static void convert_yuy2_r5g6b5(const BYTE *src, BYTE *dst, +@@ -820,6 +820,126 @@ static void convert_x8r8g8b8_l8(const BYTE *src, BYTE *dst, } } @@ -1592,8 +1591,8 @@ index 5502d05..d75dbdb 100644 struct d3dfmt_converter_desc { enum wined3d_format_id from, to; -@@ -816,6 +936,33 @@ static const struct d3dfmt_converter_desc converters[] = - {WINED3DFMT_YUY2, WINED3DFMT_B5G6R5_UNORM, convert_yuy2_r5g6b5}, +@@ -837,6 +957,33 @@ static const struct d3dfmt_converter_desc converters[] = + {WINED3DFMT_B8G8R8X8_UNORM, WINED3DFMT_L8_UNORM, convert_x8r8g8b8_l8}, }; +static const struct d3dfmt_converter_desc dxtn_converters[] = @@ -1626,7 +1625,7 @@ index 5502d05..d75dbdb 100644 static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_format_id from, enum wined3d_format_id to) { -@@ -827,6 +974,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo +@@ -848,6 +995,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo return &converters[i]; } @@ -1654,18 +1653,6 @@ index 93cecf0..78cf50d 100644 +@ cdecl wined3d_dxt3_encode(ptr ptr long long long long long) +@ cdecl wined3d_dxt5_decode(ptr ptr long long long long long) +@ cdecl wined3d_dxt5_encode(ptr ptr long long long long long) -diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c -index f8a84a1..0fc3738 100644 ---- a/dlls/wined3d/wined3d_main.c -+++ b/dlls/wined3d/wined3d_main.c -@@ -349,6 +349,7 @@ static BOOL wined3d_dll_destroy(HINSTANCE hInstDLL) - - DeleteCriticalSection(&wined3d_wndproc_cs); - DeleteCriticalSection(&wined3d_cs); -+ - return TRUE; - } - diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 239ccd8..614805a 100644 --- a/include/wine/wined3d.h @@ -1689,5 +1676,5 @@ index 239ccd8..614805a 100644 + #endif /* __WINE_WINED3D_H */ -- -1.9.1 +2.7.4 diff --git a/patches/wined3d-DXTn/definition b/patches/wined3d-DXTn/definition index b2905771..f746a494 100644 --- a/patches/wined3d-DXTn/definition +++ b/patches/wined3d-DXTn/definition @@ -2,3 +2,4 @@ Fixes: [25486] Lego Stunt Rally requires DXTn software de/encoding support Fixes: [29586] Tumblebugs 2 requires DXTn software encoding support # Fixes: [14939] Black & White needs DXTn software decoding support Fixes: [17913] Port Royale doesn't display ocean correctly +Depends: wined3d-WINED3DFMT_B8G8R8X8_UNORM \ No newline at end of file diff --git a/patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch b/patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch index 0a0e81a1..6aa47cc5 100644 --- a/patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch +++ b/patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch @@ -1,4 +1,4 @@ -From e2d79a523dba80544b4358a60b5f248f74eb4c00 Mon Sep 17 00:00:00 2001 +From 8fc8b557147de0cffc56501a6ec7ca02b5aa2af0 Mon Sep 17 00:00:00 2001 From: Stanislav Zhukov Date: Wed, 11 Jul 2018 09:33:19 +1000 Subject: [PATCH] wined3d: Implement WINED3DFMT_B8G8R8X8_UNORM to @@ -10,11 +10,11 @@ Signed-off-by: Stanislav Zhukov 1 file changed, 20 insertions(+) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index f9e3af37ff4..6ad7bb94573 100644 +index 2f74ad6..ba0b647 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -919,6 +919,25 @@ static void convert_x8r8g8b8_dxt5(const BYTE *src, BYTE *dst, - wined3d_dxt5_encode(src, dst, pitch_in, pitch_out, WINED3DFMT_B8G8R8X8_UNORM, w, h); +@@ -801,6 +801,25 @@ static void convert_yuy2_r5g6b5(const BYTE *src, BYTE *dst, + } } +static void convert_x8r8g8b8_l8(const BYTE *src, BYTE *dst, @@ -39,14 +39,14 @@ index f9e3af37ff4..6ad7bb94573 100644 struct d3dfmt_converter_desc { enum wined3d_format_id from, to; -@@ -933,6 +952,7 @@ static const struct d3dfmt_converter_desc converters[] = +@@ -815,6 +834,7 @@ static const struct d3dfmt_converter_desc converters[] = {WINED3DFMT_B8G8R8X8_UNORM, WINED3DFMT_B8G8R8A8_UNORM, convert_a8r8g8b8_x8r8g8b8}, {WINED3DFMT_YUY2, WINED3DFMT_B8G8R8X8_UNORM, convert_yuy2_x8r8g8b8}, {WINED3DFMT_YUY2, WINED3DFMT_B5G6R5_UNORM, convert_yuy2_r5g6b5}, + {WINED3DFMT_B8G8R8X8_UNORM, WINED3DFMT_L8_UNORM, convert_x8r8g8b8_l8}, }; - static const struct d3dfmt_converter_desc dxtn_converters[] = + static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_format_id from, -- -2.18.0 +2.7.4