diff --git a/patches/Staging/0001-ntdll-Print-a-warning-message-specifying-the-wine-st.patch b/patches/Staging/0001-ntdll-Print-a-warning-message-specifying-the-wine-st.patch index 0446e678..e5118c0f 100644 --- a/patches/Staging/0001-ntdll-Print-a-warning-message-specifying-the-wine-st.patch +++ b/patches/Staging/0001-ntdll-Print-a-warning-message-specifying-the-wine-st.patch @@ -1,4 +1,4 @@ -From f48fa2ff628c3262245593301a141dee31118fd4 Mon Sep 17 00:00:00 2001 +From 6a4be6a3089d37ff825853d2644d826d80d59e4f Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 2 Oct 2014 19:44:31 +0200 Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging @@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging 1 file changed, 15 insertions(+) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 021f7941969..68cb4b25d85 100644 +index bad1492e138..6f80e7b3a28 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -42,6 +42,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay); +@@ -43,6 +43,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay); WINE_DECLARE_DEBUG_CHANNEL(snoop); WINE_DECLARE_DEBUG_CHANNEL(loaddll); WINE_DECLARE_DEBUG_CHANNEL(imports); @@ -20,7 +20,7 @@ index 021f7941969..68cb4b25d85 100644 #ifdef _WIN64 #define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232) -@@ -3822,6 +3823,7 @@ void WINAPI LdrShutdownProcess(void) +@@ -3823,6 +3824,7 @@ void WINAPI LdrShutdownProcess(void) process_detach(); } @@ -28,7 +28,7 @@ index 021f7941969..68cb4b25d85 100644 /****************************************************************** * RtlExitUserProcess (NTDLL.@) -@@ -4244,6 +4246,9 @@ static void release_address_space(void) +@@ -4317,6 +4319,9 @@ static void release_address_space(void) */ void loader_init( CONTEXT *context, void **entry ) { @@ -38,9 +38,9 @@ index 021f7941969..68cb4b25d85 100644 static int attach_done; NTSTATUS status; ULONG_PTR cookie, port = 0; -@@ -4317,6 +4322,16 @@ void loader_init( CONTEXT *context, void **entry ) - if (NtCurrentTeb()->WowTebOffset) init_wow64( context ); - #endif +@@ -4397,6 +4402,16 @@ void loader_init( CONTEXT *context, void **entry ) + wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress ); + } + RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" ); + InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL ); diff --git a/patches/cmd-launch-association/0003-cmd-Changed-errorlevel-type-to-DWORD.patch b/patches/cmd-launch-association/0003-cmd-Changed-errorlevel-type-to-DWORD.patch index a41f5c6e..12c1ae71 100644 --- a/patches/cmd-launch-association/0003-cmd-Changed-errorlevel-type-to-DWORD.patch +++ b/patches/cmd-launch-association/0003-cmd-Changed-errorlevel-type-to-DWORD.patch @@ -1,4 +1,4 @@ -From bbd077ad0ba63001b1a785c2b3c740b5b01d3469 Mon Sep 17 00:00:00 2001 +From 5d1a7ff33160080ad2aca22f689c5b4b446837d8 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 18 Jun 2024 09:14:56 +1000 Subject: [PATCH] cmd: Changed errorlevel type to DWORD @@ -12,23 +12,23 @@ as an error with clang/mingw in the latest version. 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c -index f98ac902eba..147f94ac4bb 100644 +index 1e92e88d191..9b8cfd389b9 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c -@@ -440,7 +440,7 @@ void WCMD_choice (const WCHAR * args) { +@@ -442,7 +442,7 @@ RETURN_CODE WCMD_choice (const WCHAR * args) SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), oldmode); errorlevel = (ptr - opt_c) + 1; - TRACE("answer: %d\n", errorlevel); + TRACE("answer: %ld\n", errorlevel); free(my_command); - return; + return errorlevel; } diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h -index dde5d1e12ec..f202e6ef9e4 100644 +index 6c76070338c..d750aca5572 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h -@@ -306,7 +306,7 @@ void WCMD_set_for_loop_variable(int var_idx, const WCHAR *value); +@@ -336,7 +336,7 @@ void WCMD_set_for_loop_variable(int var_idx, const WCHAR *value); * variables and batch parameters substitution already done. */ extern WCHAR quals[MAXSTRING], param1[MAXSTRING], param2[MAXSTRING]; @@ -38,7 +38,7 @@ index dde5d1e12ec..f202e6ef9e4 100644 extern FOR_CONTEXT *forloopcontext; extern BOOL delayedsubst; diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c -index 702c3657a2b..0f8bdd3df14 100644 +index 2df0d7c53d3..095be784f2c 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -36,7 +36,7 @@ extern const WCHAR inbuilt[][10]; diff --git a/patches/ntdll-Junction_Points/0023-wcmd-Add-junction-point-support-to-mklink.patch b/patches/ntdll-Junction_Points/0023-wcmd-Add-junction-point-support-to-mklink.patch index 4f346bdc..d0feace8 100644 --- a/patches/ntdll-Junction_Points/0023-wcmd-Add-junction-point-support-to-mklink.patch +++ b/patches/ntdll-Junction_Points/0023-wcmd-Add-junction-point-support-to-mklink.patch @@ -1,7 +1,7 @@ -From 48cbd1c62bb0d2945334dfea222a7e19ea149c64 Mon Sep 17 00:00:00 2001 +From 8ed97a5ccc82d6d55cca547d201bffee52094505 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Wed, 29 May 2019 16:01:45 -0600 -Subject: wcmd: Add junction point support to mklink. +Subject: [PATCH] wcmd: Add junction point support to mklink. Signed-off-by: Erich E. Hoover --- @@ -9,7 +9,7 @@ Signed-off-by: Erich E. Hoover 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c -index dd3ae5b509b..53734b1e940 100644 +index 9b8cfd389b9..fd4b024d59a 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -31,6 +31,9 @@ @@ -22,8 +22,8 @@ index dd3ae5b509b..53734b1e940 100644 WINE_DEFAULT_DEBUG_CHANNEL(cmd); -@@ -4997,6 +5000,49 @@ void WCMD_color (void) { - } +@@ -4096,6 +4099,49 @@ RETURN_CODE WCMD_color(void) + return errorlevel = return_code; } +BOOL WCMD_create_junction(WCHAR *link, WCHAR *target) { @@ -72,7 +72,7 @@ index dd3ae5b509b..53734b1e940 100644 /**************************************************************************** * WCMD_mklink */ -@@ -5045,7 +5091,7 @@ void WCMD_mklink(WCHAR *args) +@@ -4144,7 +4190,7 @@ void WCMD_mklink(WCHAR *args) else if(!junction) ret = CreateSymbolicLinkW(file1, file2, isdir); else @@ -82,5 +82,5 @@ index dd3ae5b509b..53734b1e940 100644 if(!ret) WCMD_output_stderr(WCMD_LoadMessage(WCMD_READFAIL), file1); -- -2.17.1 +2.43.0 diff --git a/patches/odbc-remove-unixodbc/definition b/patches/odbc-remove-unixodbc/definition index 78401d59..adda6cd8 100644 --- a/patches/odbc-remove-unixodbc/definition +++ b/patches/odbc-remove-unixodbc/definition @@ -1 +1,2 @@ Fixes: [54499] Support native ODBC drivers. +Disabled: True diff --git a/patches/server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch b/patches/server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch deleted file mode 100644 index e4afbfb9..00000000 --- a/patches/server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch +++ /dev/null @@ -1,70 +0,0 @@ -From f98d2efae94053cf8b7f817c2d6d77297fbbd757 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Thu, 19 Mar 2015 02:18:37 +0100 -Subject: [PATCH] user32: Get rid of wineserver call for GetLastInputInfo. - ---- - dlls/user32/input.c | 7 +++++++ - server/protocol.def | 4 ++-- - server/queue.c | 1 + - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/dlls/user32/input.c b/dlls/user32/input.c -index d9ecc25e4d2..11c38226624 100644 ---- a/dlls/user32/input.c -+++ b/dlls/user32/input.c -@@ -510,6 +510,7 @@ done: - BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii) - { - BOOL ret; -+ shmglobal_t *shm = wine_get_shmglobal(); - - TRACE("%p\n", plii); - -@@ -519,6 +520,12 @@ BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii) - return FALSE; - } - -+ if (shm) -+ { -+ plii->dwTime = shm->last_input_time; -+ return TRUE; -+ } -+ - SERVER_START_REQ( get_last_input_time ) - { - ret = !wine_server_call_err( req ); -diff --git a/server/protocol.def b/server/protocol.def -index 6a9553bf34a..18350905457 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -71,12 +71,12 @@ struct request_max_size - - typedef struct - { -- int dummy; -+ unsigned int last_input_time; /* last input time */ - } shmglobal_t; - - typedef struct - { -- int queue_bits; /* queue wake bits */ -+ int queue_bits; /* queue wake bits */ - } shmlocal_t; - - /* debug event data */ -diff --git a/server/queue.c b/server/queue.c -index d7c0f7178ec..337bdf3b044 100644 ---- a/server/queue.c -+++ b/server/queue.c -@@ -1600,6 +1600,7 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg - - update_key_state( desktop, desktop->keystate, msg->msg, msg->wparam ); - last_input_time = get_tick_count(); -+ if (shmglobal) shmglobal->last_input_time = last_input_time; - if (msg->msg != WM_MOUSEMOVE) always_queue = 1; - - if (is_keyboard_msg( msg )) --- -2.26.0 - diff --git a/patches/server-Shared_Memory/definition b/patches/server-Shared_Memory/definition deleted file mode 100644 index 54f7a6e4..00000000 --- a/patches/server-Shared_Memory/definition +++ /dev/null @@ -1,8 +0,0 @@ -# Bugs 37419 and 29582 track applications which want a faster -# GetForegroundWindow(). Unfortunately, that patch is disabled, and I can't -# find record of applications which want the other functions here to be faster. -Depends: server-PeekMessage -Depends: server-Signal_Thread -Depends: ntdll-ext4-case-folder -# This is not worth rebasing right now. -Disabled: true diff --git a/patches/server-Shared_Memory/xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch b/patches/server-Shared_Memory/xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch deleted file mode 100644 index 1736ef38..00000000 --- a/patches/server-Shared_Memory/xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 8f5ab18e86ae4914f3a79e16f8317a8f297ac179 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 21 Mar 2015 22:35:24 +0100 -Subject: user32: Cache the result of GetForegroundWindow. - ---- - dlls/user32/focus.c | 21 ++++++++++++++++++++- - dlls/user32/user_private.h | 2 ++ - server/protocol.def | 5 ++++- - server/queue.c | 20 ++++++++++++++++++-- - 4 files changed, 44 insertions(+), 4 deletions(-) - -diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c -index 35fe89b..8b17d1f 100644 ---- a/dlls/user32/focus.c -+++ b/dlls/user32/focus.c -@@ -367,12 +367,31 @@ HWND WINAPI GetFocus(void) - */ - HWND WINAPI GetForegroundWindow(void) - { -+ struct user_thread_info *thread_info = get_user_thread_info(); -+ shmglobal_t *shm = wine_get_shmglobal(); - HWND ret = 0; -+ DWORD epoch; -+ -+ if (shm) -+ { -+ epoch = shm->foreground_wnd_epoch; -+ -+ if (epoch == thread_info->foreground_wnd_epoch) -+ return thread_info->foreground_wnd; -+ } - - SERVER_START_REQ( get_thread_input ) - { - req->tid = 0; -- if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->foreground ); -+ if (!wine_server_call_err( req )) -+ { -+ ret = wine_server_ptr_handle( reply->foreground ); -+ if (shm) -+ { -+ thread_info->foreground_wnd = ret; -+ thread_info->foreground_wnd_epoch = epoch; -+ } -+ } - } - SERVER_END_REQ; - return ret; -diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h -index 1c87de4..26c771e 100644 ---- a/dlls/user32/user_private.h -+++ b/dlls/user32/user_private.h -@@ -189,6 +189,8 @@ struct user_thread_info - HWND top_window; /* Desktop window */ - HWND msg_window; /* HWND_MESSAGE parent window */ - RAWINPUT *rawinput; -+ HWND foreground_wnd; /* Cache of the foreground window */ -+ DWORD foreground_wnd_epoch; /* Counter to invalidate foreground window */ - }; - - C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); -diff --git a/server/protocol.def b/server/protocol.def -index 29c31da..a49d9d0 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -69,11 +69,14 @@ struct request_max_size - #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */ - #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */ - -+/* wineserver global shared memory block */ - typedef struct - { -- unsigned int last_input_time; /* last input time */ -+ unsigned int last_input_time; /* last input time */ -+ unsigned int foreground_wnd_epoch; /* counter to invalidate foreground window */ - } shmglobal_t; - -+/* wineserver local shared memory block */ - typedef struct - { - int queue_bits; /* queue wake bits */ -diff --git a/server/queue.c b/server/queue.c -index 6bbd2f2..f430eef 100644 ---- a/server/queue.c -+++ b/server/queue.c -@@ -448,6 +448,7 @@ static void set_foreground_input( struct desktop *desktop, struct thread_input * - if (desktop->foreground_input == input) return; - set_clip_rectangle( desktop, NULL, 1 ); - desktop->foreground_input = input; -+ if (shmglobal) interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); - } - - /* get the hook table for a given thread */ -@@ -1093,7 +1094,12 @@ static inline void thread_input_cleanup_window( struct msg_queue *queue, user_ha - - if (window == input->focus) input->focus = 0; - if (window == input->capture) input->capture = 0; -- if (window == input->active) input->active = 0; -+ if (window == input->active) -+ { -+ input->active = 0; -+ if (shmglobal && input->desktop->foreground_input == input) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); -+ } - if (window == input->menu_owner) input->menu_owner = 0; - if (window == input->move_size) input->move_size = 0; - if (window == input->caret) set_caret_window( input, 0 ); -@@ -1148,7 +1154,12 @@ int attach_thread_input( struct thread *thread_from, struct thread *thread_to ) - if (thread_from->queue) - { - if (!input->focus) input->focus = thread_from->queue->input->focus; -- if (!input->active) input->active = thread_from->queue->input->active; -+ if (!input->active) -+ { -+ input->active = thread_from->queue->input->active; -+ if (shmglobal && input->desktop->foreground_input == input) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); -+ } - } - - ret = assign_thread_input( thread_from, input ); -@@ -1180,6 +1191,9 @@ void detach_thread_input( struct thread *thread_from ) - { - input->active = old_input->active; - old_input->active = 0; -+ if (shmglobal && (input->desktop->foreground_input == input || -+ old_input->desktop->foreground_input == old_input)) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); - } - release_object( thread ); - } -@@ -3070,6 +3084,8 @@ DECL_HANDLER(set_active_window) - reply->previous = queue->input->active; - queue->input->active = get_user_full_handle( req->handle ); - update_shm_thread_input( queue->input ); -+ if (shmglobal && queue->input->desktop->foreground_input == queue->input) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); - } - else set_error( STATUS_INVALID_HANDLE ); - } --- -2.3.7 - diff --git a/staging/upstream-commit b/staging/upstream-commit index 7cdeb3e0..324e1903 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -6e3dcf6c5877867b98b0d01b85206fba780c39c9 +8179609faddee580621529f8b1fffba9a50fb650