Rebase against 8179609faddee580621529f8b1fffba9a50fb650.

This commit is contained in:
Alistair Leslie-Hughes 2024-07-10 11:24:56 +10:00
parent f58c6016bd
commit d2c868d8c9
8 changed files with 24 additions and 245 deletions

View File

@ -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 <sebastian@fds-team.de>
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 );

View File

@ -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 <leslie_alistair@hotmail.com>
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];

View File

@ -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" <erich.e.hoover@gmail.com>
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 <erich.e.hoover@gmail.com>
---
@ -9,7 +9,7 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
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

View File

@ -1 +1,2 @@
Fixes: [54499] Support native ODBC drivers.
Disabled: True

View File

@ -1,70 +0,0 @@
From f98d2efae94053cf8b7f817c2d6d77297fbbd757 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
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

View File

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

View File

@ -1,144 +0,0 @@
From 8f5ab18e86ae4914f3a79e16f8317a8f297ac179 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
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

View File

@ -1 +1 @@
6e3dcf6c5877867b98b0d01b85206fba780c39c9
8179609faddee580621529f8b1fffba9a50fb650