summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2010-09-20 15:03:05 +1000
committerChase Douglas <chase.douglas@ubuntu.com>2010-10-13 21:42:27 +0200
commitf7d671b89a6c4e00f1333960b56d18f69548628e (patch)
tree4ead1eb0696a7379eacecb6f7054203ae19617a1
parent547e933d4d842a5f92a60fdf07d43fd9f69ca138 (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.c13
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)
{