diff options
author | Daniel Stone <daniel@fooishbar.org> | 2010-09-20 15:03:05 +1000 |
---|---|---|
committer | Chase Douglas <chase.douglas@ubuntu.com> | 2010-10-13 21:42:27 +0200 |
commit | f7d671b89a6c4e00f1333960b56d18f69548628e (patch) | |
tree | 4ead1eb0696a7379eacecb6f7054203ae19617a1 | |
parent | 547e933d4d842a5f92a60fdf07d43fd9f69ca138 (diff) |
Input: Pass sprite instead of device to XYToWindow
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.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
-rw-r--r-- | dix/events.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/dix/events.c b/dix/events.c index 2c9005256..987abc203 100644 --- a/dix/events.c +++ b/dix/events.c @@ -335,7 +335,7 @@ IsMaster(DeviceIntPtr dev) } static WindowPtr XYToWindow( - DeviceIntPtr pDev, + SpritePtr pSprite, int x, int y ); @@ -1276,6 +1276,7 @@ static void ComputeFreezes(void) { DeviceIntPtr replayDev = syncEvents.replayDev; + SpritePtr pSprite = replayDev->spriteInfo->sprite; WindowPtr w; GrabPtr grab; DeviceIntPtr dev; @@ -1292,7 +1293,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)) @@ -2567,15 +2568,13 @@ PointInBorderSize(WindowPtr pWin, int x, int y) * @returns the window at the given coordinates. */ static WindowPtr -XYToWindow(DeviceIntPtr pDev, int x, int y) +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; while (pWin) { if ((pWin->mapped) && @@ -2787,7 +2786,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) { |