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 <[email protected]>
> Signed-off-by: Chase Douglas <[email protected]>
> ---
>  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 <[email protected]>

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
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to