Xi: fix XIWarpPointer up for FP3232 as input coordinates.
requires inputproto 1.9.99.902 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
5e96945cf5
commit
0f9ffc887c
|
@ -62,12 +62,12 @@ SProcXIWarpPointer(ClientPtr client)
|
||||||
swaps(&stuff->length, n);
|
swaps(&stuff->length, n);
|
||||||
swapl(&stuff->src_win, n);
|
swapl(&stuff->src_win, n);
|
||||||
swapl(&stuff->dst_win, n);
|
swapl(&stuff->dst_win, n);
|
||||||
swaps(&stuff->src_x, n);
|
swapl(&stuff->src_x, n);
|
||||||
swaps(&stuff->src_y, n);
|
swapl(&stuff->src_y, n);
|
||||||
swaps(&stuff->src_width, n);
|
swaps(&stuff->src_width, n);
|
||||||
swaps(&stuff->src_height, n);
|
swaps(&stuff->src_height, n);
|
||||||
swaps(&stuff->dst_x, n);
|
swapl(&stuff->dst_x, n);
|
||||||
swaps(&stuff->dst_y, n);
|
swapl(&stuff->dst_y, n);
|
||||||
swaps(&stuff->deviceid, n);
|
swaps(&stuff->deviceid, n);
|
||||||
return (ProcXIWarpPointer(client));
|
return (ProcXIWarpPointer(client));
|
||||||
}
|
}
|
||||||
|
@ -81,6 +81,8 @@ ProcXIWarpPointer(ClientPtr client)
|
||||||
DeviceIntPtr pDev;
|
DeviceIntPtr pDev;
|
||||||
SpritePtr pSprite;
|
SpritePtr pSprite;
|
||||||
ScreenPtr newScreen;
|
ScreenPtr newScreen;
|
||||||
|
int src_x, src_y;
|
||||||
|
int dst_x, dst_y;
|
||||||
|
|
||||||
REQUEST(xXIWarpPointerReq);
|
REQUEST(xXIWarpPointerReq);
|
||||||
REQUEST_SIZE_MATCH(xXIWarpPointerReq);
|
REQUEST_SIZE_MATCH(xXIWarpPointerReq);
|
||||||
|
@ -105,6 +107,11 @@ ProcXIWarpPointer(ClientPtr client)
|
||||||
x = pSprite->hotPhys.x;
|
x = pSprite->hotPhys.x;
|
||||||
y = pSprite->hotPhys.y;
|
y = pSprite->hotPhys.y;
|
||||||
|
|
||||||
|
src_x = stuff->src_x / (double)(1 << 16);
|
||||||
|
src_y = stuff->src_y / (double)(1 << 16);
|
||||||
|
dst_x = stuff->dst_x / (double)(1 << 16);
|
||||||
|
dst_y = stuff->dst_y / (double)(1 << 16);
|
||||||
|
|
||||||
if (stuff->src_win != None)
|
if (stuff->src_win != None)
|
||||||
{
|
{
|
||||||
int winX, winY;
|
int winX, winY;
|
||||||
|
@ -119,12 +126,12 @@ ProcXIWarpPointer(ClientPtr client)
|
||||||
winX = src->drawable.x;
|
winX = src->drawable.x;
|
||||||
winY = src->drawable.y;
|
winY = src->drawable.y;
|
||||||
if (src->drawable.pScreen != pSprite->hotPhys.pScreen ||
|
if (src->drawable.pScreen != pSprite->hotPhys.pScreen ||
|
||||||
x < winX + stuff->src_x ||
|
x < winX + src_x ||
|
||||||
y < winY + stuff->src_y ||
|
y < winY + src_y ||
|
||||||
(stuff->src_width != 0 &&
|
(stuff->src_width != 0 &&
|
||||||
winX + stuff->src_x + (int)stuff->src_width < 0) ||
|
winX + src_x + (int)stuff->src_width < 0) ||
|
||||||
(stuff->src_height != 0 &&
|
(stuff->src_height != 0 &&
|
||||||
winY + stuff->src_y + (int)stuff->src_height < y) ||
|
winY + src_y + (int)stuff->src_height < y) ||
|
||||||
!PointInWindowIsVisible(src, x, y))
|
!PointInWindowIsVisible(src, x, y))
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
@ -137,8 +144,8 @@ ProcXIWarpPointer(ClientPtr client)
|
||||||
} else
|
} else
|
||||||
newScreen = pSprite->hotPhys.pScreen;
|
newScreen = pSprite->hotPhys.pScreen;
|
||||||
|
|
||||||
x += stuff->dst_x;
|
x += dst_x;
|
||||||
y += stuff->dst_y;
|
y += dst_y;
|
||||||
|
|
||||||
if (x < 0)
|
if (x < 0)
|
||||||
x = 0;
|
x = 0;
|
||||||
|
|
|
@ -708,7 +708,7 @@ XEXT_LIB='$(top_builddir)/Xext/libXext.la'
|
||||||
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
|
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
|
||||||
|
|
||||||
dnl Core modules for most extensions, et al.
|
dnl Core modules for most extensions, et al.
|
||||||
REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto [xextproto >= 7.0.99.3] [xproto >= 7.0.13] [xtrans >= 1.2.2] bigreqsproto resourceproto fontsproto [inputproto >= 1.9.99.15] [kbproto >= 1.0.3]"
|
REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto [xextproto >= 7.0.99.3] [xproto >= 7.0.13] [xtrans >= 1.2.2] bigreqsproto resourceproto fontsproto [inputproto >= 1.9.99.902] [kbproto >= 1.0.3]"
|
||||||
REQUIRED_LIBS="xfont xau [pixman-1 >= 0.15.20]"
|
REQUIRED_LIBS="xfont xau [pixman-1 >= 0.15.20]"
|
||||||
|
|
||||||
dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
|
dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
|
||||||
|
|
Loading…
Reference in New Issue