Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
40b65e28
Commit
40b65e28
authored
Feb 13, 2024
by
Rémi Bernon
Committed by
Alexandre Julliard
Mar 06, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Continuously send pointer update messages while it's down.
parent
d8b8ac85
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
3 deletions
+21
-3
queue.c
server/queue.c
+21
-3
No files found.
server/queue.c
View file @
40b65e28
...
...
@@ -2221,13 +2221,22 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
struct
pointer
{
struct
list
entry
;
struct
timeout_user
*
timeout
;
struct
desktop
*
desktop
;
user_handle_t
win
;
int
primary
;
hw_input_t
input
;
};
static
void
queue_pointer_message
(
struct
pointer
*
pointer
)
static
void
queue_pointer_message
(
struct
pointer
*
pointer
,
int
repeated
);
static
void
pointer_message_timeout
(
void
*
private
)
{
struct
pointer
*
pointer
=
private
;
queue_pointer_message
(
pointer
,
1
);
}
static
void
queue_pointer_message
(
struct
pointer
*
pointer
,
int
repeated
)
{
static
const
unsigned
int
messages
[][
2
]
=
{
...
...
@@ -2265,7 +2274,13 @@ static void queue_pointer_message( struct pointer *pointer )
queue_hardware_message
(
desktop
,
msg
,
1
);
}
if
(
input
->
hw
.
msg
==
WM_POINTERUP
)
if
(
input
->
hw
.
msg
!=
WM_POINTERUP
)
{
pointer
->
input
.
hw
.
msg
=
WM_POINTERUPDATE
;
pointer
->
input
.
hw
.
wparam
&=
~
(
POINTER_MESSAGE_FLAG_NEW
<<
16
);
pointer
->
timeout
=
add_timeout_user
(
-
160000
,
pointer_message_timeout
,
pointer
);
}
else
{
list_remove
(
&
pointer
->
entry
);
free
(
pointer
);
...
...
@@ -2280,6 +2295,7 @@ static struct pointer *find_pointer_from_id( struct desktop *desktop, unsigned i
if
(
LOWORD
(
pointer
->
input
.
hw
.
wparam
)
==
id
)
return
pointer
;
pointer
=
mem_alloc
(
sizeof
(
struct
pointer
)
);
pointer
->
timeout
=
NULL
;
pointer
->
desktop
=
desktop
;
pointer
->
primary
=
list_empty
(
&
desktop
->
pointers
);
list_add_tail
(
&
desktop
->
pointers
,
&
pointer
->
entry
);
...
...
@@ -2321,10 +2337,11 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_
if
(
input
->
hw
.
msg
==
WM_POINTERDOWN
||
input
->
hw
.
msg
==
WM_POINTERUP
||
input
->
hw
.
msg
==
WM_POINTERUPDATE
)
{
pointer
=
find_pointer_from_id
(
desktop
,
LOWORD
(
input
->
hw
.
wparam
)
);
if
(
pointer
->
timeout
)
remove_timeout_user
(
pointer
->
timeout
);
pointer
->
input
=
*
input
;
pointer
->
win
=
win
;
queue_pointer_message
(
pointer
);
queue_pointer_message
(
pointer
,
0
);
return
;
}
...
...
@@ -2661,6 +2678,7 @@ void free_pointers( struct desktop *desktop )
LIST_FOR_EACH_ENTRY_SAFE
(
pointer
,
next
,
&
desktop
->
pointers
,
struct
pointer
,
entry
)
{
list_remove
(
&
pointer
->
entry
);
if
(
pointer
->
timeout
)
remove_timeout_user
(
pointer
->
timeout
);
free
(
pointer
);
}
}
...
...
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