Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
5a30e318
Commit
5a30e318
authored
Dec 15, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Optionally return the global key state when queueing a hardware message.
parent
5379a75b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
3 deletions
+14
-3
server_protocol.h
include/wine/server_protocol.h
+2
-1
protocol.def
server/protocol.def
+1
-0
queue.c
server/queue.c
+10
-2
trace.c
server/trace.c
+1
-0
No files found.
include/wine/server_protocol.h
View file @
5a30e318
...
...
@@ -2796,6 +2796,7 @@ struct send_hardware_message_reply
{
struct
reply_header
__header
;
int
wait
;
/* VARARG(keystate,bytes); */
char
__pad_12
[
4
];
};
#define SEND_HWMSG_INJECTED 0x01
...
...
@@ -5639,6 +5640,6 @@ union generic_reply
struct
set_suspend_context_reply
set_suspend_context_reply
;
};
#define SERVER_PROTOCOL_VERSION 42
8
#define SERVER_PROTOCOL_VERSION 42
9
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/protocol.def
View file @
5a30e318
...
...
@@ -2032,6 +2032,7 @@ enum message_type
unsigned int flags; /* flags (see below) */
@REPLY
int wait; /* do we need to wait for a reply? */
VARARG(keystate,bytes); /* global state array for all the keys */
@END
#define SEND_HWMSG_INJECTED 0x01
...
...
server/queue.c
View file @
5a30e318
...
...
@@ -2189,13 +2189,20 @@ DECL_HANDLER(send_hardware_message)
struct
thread
*
thread
=
NULL
;
struct
desktop
*
desktop
;
struct
msg_queue
*
sender
=
get_current_queue
();
data_size_t
size
=
min
(
256
,
get_reply_max_size
()
);
if
(
!
(
desktop
=
get_thread_desktop
(
current
,
0
)))
return
;
if
(
req
->
win
)
{
if
(
!
(
thread
=
get_window_thread
(
req
->
win
)))
return
;
desktop
=
(
struct
desktop
*
)
grab_object
(
thread
->
queue
->
input
->
desktop
);
if
(
desktop
!=
thread
->
queue
->
input
->
desktop
)
{
/* don't allow queuing events to a different desktop */
release_object
(
desktop
);
return
;
}
}
else
if
(
!
(
desktop
=
get_thread_desktop
(
current
,
0
)))
return
;
switch
(
req
->
input
.
type
)
{
...
...
@@ -2212,6 +2219,7 @@ DECL_HANDLER(send_hardware_message)
set_error
(
STATUS_INVALID_PARAMETER
);
}
if
(
thread
)
release_object
(
thread
);
set_reply_data
(
desktop
->
keystate
,
size
);
release_object
(
desktop
);
}
...
...
server/trace.c
View file @
5a30e318
...
...
@@ -2452,6 +2452,7 @@ static void dump_send_hardware_message_request( const struct send_hardware_messa
static
void
dump_send_hardware_message_reply
(
const
struct
send_hardware_message_reply
*
req
)
{
fprintf
(
stderr
,
" wait=%d"
,
req
->
wait
);
dump_varargs_bytes
(
", keystate="
,
cur_size
);
}
static
void
dump_get_message_request
(
const
struct
get_message_request
*
req
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment