mirror of https://github.com/encounter/SDL.git
[KMS/DRM] Correct small omission on bugfix #5513: y-coord correction has to be done on WarpMouseGlobal, too.
This commit is contained in:
parent
2cc70ca39e
commit
088fb52579
|
@ -442,10 +442,14 @@ KMSDRM_WarpMouseGlobal(int x, int y)
|
||||||
|
|
||||||
/* And now update the cursor graphic position on screen. */
|
/* And now update the cursor graphic position on screen. */
|
||||||
if (dispdata->cursor_bo) {
|
if (dispdata->cursor_bo) {
|
||||||
int ret, drm_fd;
|
int drm_fd, screen_y;
|
||||||
drm_fd = KMSDRM_gbm_device_get_fd(
|
int ret = 0;
|
||||||
KMSDRM_gbm_bo_get_device(dispdata->cursor_bo));
|
|
||||||
ret = KMSDRM_drmModeMoveCursor(drm_fd, dispdata->crtc->crtc_id, x, y);
|
/* Correct the Y coordinate, because DRM mouse coordinates start on screen top. */
|
||||||
|
screen_y = dispdata->mode.vdisplay - window->h + mouse->y;
|
||||||
|
|
||||||
|
drm_fd = KMSDRM_gbm_device_get_fd(KMSDRM_gbm_bo_get_device(dispdata->cursor_bo));
|
||||||
|
ret = KMSDRM_drmModeMoveCursor(drm_fd, dispdata->crtc->crtc_id, x, screen_y);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
SDL_SetError("drmModeMoveCursor() failed.");
|
SDL_SetError("drmModeMoveCursor() failed.");
|
||||||
|
@ -500,7 +504,8 @@ static void
|
||||||
KMSDRM_MoveCursor(SDL_Cursor * cursor)
|
KMSDRM_MoveCursor(SDL_Cursor * cursor)
|
||||||
{
|
{
|
||||||
SDL_Mouse *mouse = SDL_GetMouse();
|
SDL_Mouse *mouse = SDL_GetMouse();
|
||||||
int drm_fd, ret, screen_y;
|
int drm_fd, screen_y;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
/* We must NOT call SDL_SendMouseMotion() here or we will enter recursivity!
|
/* We must NOT call SDL_SendMouseMotion() here or we will enter recursivity!
|
||||||
That's why we move the cursor graphic ONLY. */
|
That's why we move the cursor graphic ONLY. */
|
||||||
|
|
|
@ -1164,8 +1164,8 @@ KMSDRM_CreateWindow(_THIS, SDL_Window * window)
|
||||||
now that we know this is not a VK window. */
|
now that we know this is not a VK window. */
|
||||||
KMSDRM_CreateCursorBO(display);
|
KMSDRM_CreateCursorBO(display);
|
||||||
|
|
||||||
/* Init mouse (=create and set the default cursor),
|
/* Create and set the default cursor now that we know
|
||||||
now that we know this is not a VK window. */
|
this is not a VK window. */
|
||||||
KMSDRM_InitMouse(_this, display);
|
KMSDRM_InitMouse(_this, display);
|
||||||
|
|
||||||
/* When we destroy a window, we remove the cursor buffer from
|
/* When we destroy a window, we remove the cursor buffer from
|
||||||
|
|
Loading…
Reference in New Issue