[PATCH v3 0/1] MR4726: server: Always release internal hardware messages
This fixes an issue seen in Outlook 365 where the password prompt appears to lock up. Technically this fixes a regression introduced in 25906eedd8679fdb474976563f4a05a92e11bbd6, but I think Outlook had other issues that would have masked this one at the time. -- v3: server: Always release internal hardware messages https://gitlab.winehq.org/wine/wine/-/merge_requests/4726
From: Brendan McGrath <bmcgrath(a)codeweavers.com> --- server/queue.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/queue.c b/server/queue.c index d3ca1172d91..ee8bdf34b7f 100644 --- a/server/queue.c +++ b/server/queue.c @@ -2193,6 +2193,11 @@ static int check_hw_message_filter( user_handle_t win, unsigned int msg_code, } } +/* is this message an internal driver notification message */ +static inline BOOL is_internal_hardware_message( unsigned int message ) +{ + return (message >= WM_WINE_FIRST_DRIVER_MSG && message <= WM_WINE_LAST_DRIVER_MSG); +} /* find a hardware message for the given queue */ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user_handle_t filter_win, @@ -2287,7 +2292,8 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user data->hw_id = msg->unique_id; set_reply_data( msg->data, msg->data_size ); - if (get_hardware_msg_bit( msg->msg ) == QS_RAWINPUT && (flags & PM_REMOVE)) + if ((get_hardware_msg_bit( msg->msg ) == QS_RAWINPUT && (flags & PM_REMOVE)) || + is_internal_hardware_message( msg->msg )) release_hardware_message( current->queue, data->hw_id ); return 1; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4726
This merge request was approved by Rémi Bernon. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4726
Thanks for your help on this one Rémi -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4726#note_56351
participants (3)
-
Brendan McGrath -
Brendan McGrath (@redmcg) -
Rémi Bernon