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.
This commit is contained in:
Frank Praznik 2024-07-29 12:39:18 -04:00
parent 5637cd009a
commit 51cccf3fa2
1 changed files with 6 additions and 0 deletions

View File

@ -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;
}
}