You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against 744f7b69bf4692265588e10650090ca2f5129ccd.
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
From 786c3fd3cfc26cb0eb116ca0f8d28a9640722404 Mon Sep 17 00:00:00 2001
|
||||
From 8be0b58eb1712de2f8ca04842fbd22cf5faa5f38 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 12 Mar 2015 02:56:21 +0100
|
||||
Date: Fri, 10 Jul 2015 16:13:53 +0200
|
||||
Subject: server: Implement locking and synchronization of keystate buffer.
|
||||
(rev 2)
|
||||
|
||||
---
|
||||
dlls/comctl32/tests/listview.c | 1 +
|
||||
server/queue.c | 58 +++++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 58 insertions(+), 1 deletion(-)
|
||||
server/queue.c | 43 +++++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 43 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
|
||||
index 3edb25a..3ec4181 100644
|
||||
@@ -22,7 +22,7 @@ index 3edb25a..3ec4181 100644
|
||||
|
||||
/* Set SHIFT key released */
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 35ee532..f278861 100644
|
||||
index e4b2969..ab8bb29 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -113,6 +113,7 @@ struct thread_input
|
||||
@@ -129,11 +129,7 @@ index 35ee532..f278861 100644
|
||||
/* first check for sent messages */
|
||||
if ((ptr = list_head( &queue->msg_list[SEND_MESSAGE] )))
|
||||
{
|
||||
@@ -2857,13 +2893,33 @@ DECL_HANDLER(get_key_state)
|
||||
}
|
||||
else
|
||||
{
|
||||
+ unsigned char *keystate;
|
||||
@@ -2861,7 +2897,12 @@ DECL_HANDLER(get_key_state)
|
||||
if (!(thread = get_thread_from_id( req->tid ))) return;
|
||||
if (thread->queue)
|
||||
{
|
||||
@@ -145,25 +141,8 @@ index 35ee532..f278861 100644
|
||||
+ reply->state = thread->queue->input->keystate[req->key & 0xff];
|
||||
+ }
|
||||
set_reply_data( thread->queue->input->keystate, size );
|
||||
+ release_object( thread );
|
||||
+ return;
|
||||
}
|
||||
release_object( thread );
|
||||
+
|
||||
+ /* fallback to desktop keystate */
|
||||
+ if (!(desktop = get_thread_desktop( current, 0 ))) return;
|
||||
+ if (req->key >= 0)
|
||||
+ reply->state = desktop->keystate[req->key & 0xff] & ~0x40;
|
||||
+ if ((keystate = set_reply_data_size( size )))
|
||||
+ {
|
||||
+ unsigned int i;
|
||||
+ for (i = 0; i < size; i++)
|
||||
+ keystate[i] = desktop->keystate[i] & ~0x40;
|
||||
+ }
|
||||
+ release_object( desktop );
|
||||
}
|
||||
}
|
||||
|
||||
release_object( thread );
|
||||
return;
|
||||
--
|
||||
2.4.2
|
||||
2.4.5
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
Fixes: [27238] Fallback to global key state for threads without a queue
|
||||
# Fixes: [27238] Fallback to global key state for threads without a queue
|
||||
Fixes: [31899] Implement locking and synchronization of key states
|
||||
Fixes: [35907] Fix caps lock state issues with multiple processes
|
||||
|
Reference in New Issue
Block a user