diff -r a4477243eb20 src/events/SDL_mouse.c --- a/src/events/SDL_mouse.c Sun Dec 03 20:27:08 2017 -0800 +++ b/src/events/SDL_mouse.c Wed Dec 06 17:34:32 2017 +0100 @@ -279,14 +279,17 @@ center_x /= 2; center_y /= 2; if (x == center_x && y == center_y) { + /* TODO: not sure these even have to be set, I think last_x/y + are not really used if warping is enabled */ mouse->last_x = center_x; mouse->last_y = center_y; return 0; } SDL_WarpMouseInWindow(window, center_x, center_y); - } - if (relative) { + xrel = x - center_x; + yrel = y - center_y; + } else if (relative) { if (mouse->relative_mode) { x = GetScaledMouseDelta(mouse->relative_speed_scale, x, &mouse->scale_accum_x); y = GetScaledMouseDelta(mouse->relative_speed_scale, y, &mouse->scale_accum_y);