mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Rebase against 8179609faddee580621529f8b1fffba9a50fb650.
This commit is contained in:
parent
f58c6016bd
commit
d2c868d8c9
@ -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 );
|
||||
|
@ -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];
|
||||
|
@ -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
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
Fixes: [54499] Support native ODBC drivers.
|
||||
Disabled: True
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
6e3dcf6c5877867b98b0d01b85206fba780c39c9
|
||||
8179609faddee580621529f8b1fffba9a50fb650
|
||||
|
Loading…
Reference in New Issue
Block a user