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
