[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