From 51cccf3fa2f026242ac43f8387b29adf6d32ea66 Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Mon, 29 Jul 2024 12:39:18 -0400 Subject: [PATCH] video: Disable relative warp emulation when warping the cursor after a fullscreen transition Otherwise, relative mode can be accidentally activated if the cursor is hidden. --- src/video/SDL_video.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 0498913016..650fae2236 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1716,10 +1716,16 @@ extern SDL_WindowFlags WINRT_DetectWindowFlags(SDL_Window *window); static void SDL_RestoreMousePosition(SDL_Window *window) { float x, y; + SDL_Mouse *mouse = SDL_GetMouse(); if (window == SDL_GetMouseFocus()) { + const SDL_bool prev_warp_val = mouse->warp_emulation_prohibited; SDL_GetMouseState(&x, &y); + + /* Disable the warp emulation so it isn't accidentally activated on a fullscreen transitions. */ + mouse->warp_emulation_prohibited = SDL_TRUE; SDL_WarpMouseInWindow(window, x, y); + mouse->warp_emulation_prohibited = prev_warp_val; } }