Browse Source

wayland: Disable warp emulation when restoring cursor visibility with the shape protocol

Frank Praznik 11 months ago
parent
commit
67f3a3ee54
1 changed files with 8 additions and 1 deletions
  1. 8 1
      src/video/wayland/SDL_waylandmouse.c

+ 8 - 1
src/video/wayland/SDL_waylandmouse.c

@@ -538,7 +538,14 @@ static int Wayland_ShowCursor(SDL_Cursor *cursor)
         if (!data->shmBuffer.shm_data) {
             if (input->cursor_shape) {
                 Wayland_SetSystemCursorShape(input, data->system_cursor);
+
                 input->cursor_visible = SDL_TRUE;
+
+                if (input->relative_mode_override) {
+                    Wayland_input_disable_relative_pointer(input);
+                    input->relative_mode_override = SDL_FALSE;
+                }
+
                 return 0;
             } else if (!wayland_get_system_cursor(d, data, &scale)) {
                 return -1;
@@ -607,7 +614,7 @@ static int Wayland_WarpMouse(SDL_Window *window, float x, float y)
     } else if (input->warp_emulation_prohibited) {
         return SDL_Unsupported();
     } else if (!d->relative_mouse_mode) {
-        Wayland_input_lock_pointer(input, window);
+        Wayland_input_enable_relative_pointer(input);
         input->relative_mode_override = SDL_TRUE;
     }