mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-03-25 09:30:44 +01:00
Fix rotated/reflected cursor positions.
Doing projective transforms required repositioning the cursor using the hotspot, but that requires relocating the upper left corner in terms of said hotspot.
This commit is contained in:
parent
93179c214f
commit
7e69e364d2
1 changed files with 11 additions and 11 deletions
|
|
@ -330,23 +330,23 @@ xf86_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
|
|||
|
||||
v.v[0] = x + ScreenPriv->HotX; v.v[1] = y + ScreenPriv->HotY; v.v[2] = 1;
|
||||
pict_f_transform_point (&crtc->f_framebuffer_to_crtc, &v);
|
||||
x = floor (v.v[0] + 0.5) - ScreenPriv->HotX;
|
||||
y = floor (v.v[1] + 0.5) - ScreenPriv->HotY;
|
||||
x = floor (v.v[0] + 0.5);
|
||||
y = floor (v.v[1] + 0.5);
|
||||
/*
|
||||
* Transform position of cursor upper left corner
|
||||
*/
|
||||
xf86_crtc_rotate_coord_back (crtc->rotation,
|
||||
cursor_info->MaxWidth,
|
||||
cursor_info->MaxHeight,
|
||||
ScreenPriv->HotX, ScreenPriv->HotY, &dx, &dy);
|
||||
x -= dx;
|
||||
y -= dy;
|
||||
}
|
||||
else
|
||||
{
|
||||
x -= crtc->x;
|
||||
y -= crtc->y;
|
||||
}
|
||||
/*
|
||||
* Transform position of cursor upper left corner
|
||||
*/
|
||||
xf86_crtc_rotate_coord_back (crtc->rotation,
|
||||
cursor_info->MaxWidth,
|
||||
cursor_info->MaxHeight,
|
||||
0, 0, &dx, &dy);
|
||||
x -= dx;
|
||||
y -= dy;
|
||||
|
||||
/*
|
||||
* Disable the cursor when it is outside the viewport
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue