From 5d1ca1c8c744c51c1d4046b8a10d37f2aea79d0b Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Sat, 27 Jul 2024 20:22:10 -0400 Subject: [PATCH] wayland: Don't fail to retrieve a system cursor if no window is focused Doing this can leave the cursor data in a weird, corrupt state. (cherry picked from commit 5617ce277d1f85d831e9d50673dcece91488616b) --- src/video/wayland/SDL_waylandmouse.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index 989d4c115e..eb5dde1630 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -194,7 +194,6 @@ static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorDa int size = 0; SDL_Window *focus; - SDL_WindowData *focusdata; int i; /* @@ -218,16 +217,17 @@ static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorDa } /* First, find the appropriate theme based on the current scale... */ focus = SDL_GetMouse()->focus; - if (!focus) { - /* Nothing to see here, bail. */ - return SDL_FALSE; - } - focusdata = focus->driverdata; + if (focus) { + SDL_WindowData *focusdata = (SDL_WindowData*)focus->driverdata; - /* Cursors use integer scaling. */ - *scale = SDL_ceilf(focusdata->scale_factor); - size *= *scale; - for (i = 0; i < vdata->num_cursor_themes; i += 1) { + /* Cursors use integer scaling. */ + *scale = SDL_ceilf(focusdata->scale_factor); + } else { + *scale = 1.0f; + } + + size *= (int)*scale; + for (i = 0; i < vdata->num_cursor_themes; ++i) { if (vdata->cursor_themes[i].size == size) { theme = vdata->cursor_themes[i].theme; break;