From: Rémi Bernon <rbernon(a)codeweavers.com> Always returning TRUE as it now can only fail if there is no foreground thread input, which can spuriously happen, and the code was returning success in that case before. --- dlls/win32u/input.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index 810cb4c0993..794dde58359 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -772,22 +772,25 @@ BOOL get_cursor_pos( POINT *pt ) */ BOOL WINAPI NtUserGetCursorInfo( CURSORINFO *info ) { - BOOL ret; + struct object_lock lock = OBJECT_LOCK_INIT; + const input_shm_t *input_shm; + NTSTATUS status; if (!info) return FALSE; - SERVER_START_REQ( get_thread_input_data ) + while ((status = get_shared_input( 0, &lock, &input_shm )) == STATUS_PENDING) { - req->tid = 0; - if ((ret = !wine_server_call( req ))) - { - info->hCursor = wine_server_ptr_handle( reply->cursor ); - info->flags = reply->show_count >= 0 ? CURSOR_SHOWING : 0; - } + info->hCursor = wine_server_ptr_handle( input_shm->cursor ); + info->flags = (input_shm->cursor_count >= 0) ? CURSOR_SHOWING : 0; } - SERVER_END_REQ; + if (status) + { + info->hCursor = 0; + info->flags = CURSOR_SHOWING; + } + get_cursor_pos( &info->ptScreenPos ); - return ret; + return TRUE; } static void check_for_events( UINT flags ) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5995