[PATCH xserver 04/10] Input: Pass sprite instead of device to XYToWindow, make non-static
Peter Hutterer
peter.hutterer at who-t.net
Tue Dec 21 17:41:18 PST 2010
On Fri, Dec 17, 2010 at 05:13:29PM +0000, Daniel Stone wrote:
> XYToWindow calculates the position of the cursor and updates the sprite
> trace, but does nothing else with the device. Pass a SpritePtr instead
> so we can update an alternate focus instead of hardcoding the device's
> sprite. Also make this function non-static, so we can use it elsewhere.
>
> Signed-off-by: Daniel Stone <daniel at fooishbar.org>
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
> dix/events.c | 18 +++++-------------
> include/input.h | 1 +
> 2 files changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/dix/events.c b/dix/events.c
> index 4aa71c1..8e3e1d3 100644
> --- a/dix/events.c
> +++ b/dix/events.c
> @@ -332,12 +332,6 @@ IsMaster(DeviceIntPtr dev)
> return dev->type == MASTER_POINTER || dev->type == MASTER_KEYBOARD;
> }
>
> -static WindowPtr XYToWindow(
> - DeviceIntPtr pDev,
> - int x,
> - int y
> -);
> -
> /**
> * Max event opcode.
> */
> @@ -1290,7 +1284,7 @@ ComputeFreezes(void)
>
> syncEvents.replayDev = (DeviceIntPtr)NULL;
>
> - w = XYToWindow(replayDev, event->root_x, event->root_y);
> + w = XYToWindow(pSprite, event->root_x, event->root_y);
> if (!CheckDeviceGrabs(replayDev, event, syncEvents.replayWin))
> {
> if (replayDev->focus && !IsPointerEvent((InternalEvent*)event))
> @@ -2564,16 +2558,14 @@ PointInBorderSize(WindowPtr pWin, int x, int y)
> *
> * @returns the window at the given coordinates.
> */
> -static WindowPtr
> -XYToWindow(DeviceIntPtr pDev, int x, int y)
> +WindowPtr
> +XYToWindow(SpritePtr pSprite, int x, int y)
> {
> WindowPtr pWin;
> BoxRec box;
> - SpritePtr pSprite;
>
> - pSprite = pDev->spriteInfo->sprite;
> pSprite->spriteTraceGood = 1; /* root window still there */
> - pWin = RootWindow(pDev)->firstChild;
> + pWin = pSprite->spriteTrace[0]->firstChild;
same comment as for the other patch, but otherwise
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
Cheers,
Peter
> while (pWin)
> {
> if ((pWin->mapped) &&
> @@ -2785,7 +2777,7 @@ CheckMotion(DeviceEvent *ev, DeviceIntPtr pDev)
> ev->root_y = pSprite->hot.y;
> }
>
> - newSpriteWin = XYToWindow(pDev, pSprite->hot.x, pSprite->hot.y);
> + newSpriteWin = XYToWindow(pSprite, pSprite->hot.x, pSprite->hot.y);
>
> if (newSpriteWin != prevSpriteWin)
> {
> diff --git a/include/input.h b/include/input.h
> index 31fdc52..ef7ef04 100644
> --- a/include/input.h
> +++ b/include/input.h
> @@ -533,6 +533,7 @@ void FixUpEventFromWindow(SpritePtr pSprite,
> WindowPtr pWin,
> Window child,
> Bool calcChild);
> +extern WindowPtr XYToWindow(SpritePtr pSprite, int x, int y);
>
> /* Implemented by the DDX. */
> extern _X_EXPORT int NewInputDeviceRequest(
> --
> 1.7.2.3
More information about the xorg-devel
mailing list