|
@@ -31,6 +31,7 @@
|
|
|
|
|
|
/* FIXME: Find a better place to put this... */
|
|
|
static Cursor x11_empty_cursor = None;
|
|
|
+static SDL_bool x11_cursor_visible = SDL_TRUE;
|
|
|
|
|
|
static SDL_Cursor *sys_cursors[SDL_HITTEST_RESIZE_LEFT + 1];
|
|
|
|
|
@@ -296,6 +297,8 @@ static int X11_ShowCursor(SDL_Cursor *cursor)
|
|
|
Display *display = GetDisplay();
|
|
|
SDL_Window *window;
|
|
|
|
|
|
+ x11_cursor_visible = !!cursor;
|
|
|
+
|
|
|
for (window = video->windows; window; window = window->next) {
|
|
|
SDL_WindowData *data = window->internal;
|
|
|
if (data) {
|
|
@@ -315,11 +318,10 @@ static void X11_WarpMouseInternal(Window xwindow, float x, float y)
|
|
|
{
|
|
|
SDL_VideoData *videodata = SDL_GetVideoDevice()->internal;
|
|
|
Display *display = videodata->display;
|
|
|
- SDL_Mouse *mouse = SDL_GetMouse();
|
|
|
SDL_bool warp_hack = SDL_FALSE;
|
|
|
|
|
|
/* XWayland will only warp the cursor if it is hidden, so this workaround is required. */
|
|
|
- if (videodata->is_xwayland && mouse && mouse->cursor_shown) {
|
|
|
+ if (videodata->is_xwayland && x11_cursor_visible) {
|
|
|
warp_hack = SDL_TRUE;
|
|
|
}
|
|
|
|