mi: remove core pointer special handling. No event has core pointer as

device now.

dix:    zero pSprite memory, stop segfaults on server restart.
This commit is contained in:
Peter Hutterer 2007-01-11 14:05:39 +10:30 committed by Peter Hutterer
parent ea82333dc1
commit 5e2f8dee63
2 changed files with 5 additions and 6 deletions

View File

@ -2172,7 +2172,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
REGION_TRANSLATE(pSprite->screen, &pSprite->Reg2, xoff, yoff); REGION_TRANSLATE(pSprite->screen, &pSprite->Reg2, xoff, yoff);
/* FIXME: if we call ConfineCursorToWindow, must we do anything else? */ /* FIXME: if we call ConfineCursorToWindow, must we do anything else? */
if ((grab = inputInfo.pointer->grab) && grab->confineTo) { if ((grab = pDev->grab) && grab->confineTo) {
if (grab->confineTo->drawable.pScreen if (grab->confineTo->drawable.pScreen
!= pSprite->hotPhys.pScreen) != pSprite->hotPhys.pScreen)
pSprite->hotPhys.x = pSprite->hotPhys.y = 0; pSprite->hotPhys.x = pSprite->hotPhys.y = 0;
@ -3902,6 +3902,7 @@ ProcGrabPointer(ClientPtr client)
oldCursor = grab->cursor; oldCursor = grab->cursor;
} }
tempGrab.cursor = cursor; tempGrab.cursor = cursor;
/* FIXME: refcnt?? */
tempGrab.resource = client->clientAsMask; tempGrab.resource = client->clientAsMask;
tempGrab.ownerEvents = stuff->ownerEvents; tempGrab.ownerEvents = stuff->ownerEvents;
tempGrab.eventMask = stuff->eventMask; tempGrab.eventMask = stuff->eventMask;
@ -3958,7 +3959,7 @@ ProcChangeActivePointerGrab(ClientPtr client)
grab->cursor = newCursor; grab->cursor = newCursor;
if (newCursor) if (newCursor)
newCursor->refcnt++; newCursor->refcnt++;
PostNewCursor(inputInfo.pointer); PostNewCursor(device);
if (oldCursor) if (oldCursor)
FreeCursor(oldCursor, (Cursor)0); FreeCursor(oldCursor, (Cursor)0);
grab->eventMask = stuff->eventMask; grab->eventMask = stuff->eventMask;
@ -4213,6 +4214,7 @@ InitSprite(DeviceIntPtr pDev, Bool hasCursor)
SpritePtr pSprite = (SpritePtr)xalloc(sizeof(SpriteRec)); SpritePtr pSprite = (SpritePtr)xalloc(sizeof(SpriteRec));
if (!pSprite) if (!pSprite)
FatalError("failed to allocate sprite struct"); FatalError("failed to allocate sprite struct");
memset(pSprite, 0, sizeof(SpriteRec));
pSprite->hot.pScreen = pSprite->hotPhys.pScreen = (ScreenPtr)NULL; pSprite->hot.pScreen = pSprite->hotPhys.pScreen = (ScreenPtr)NULL;
pSprite->win = NullWindow; pSprite->win = NullWindow;
pSprite->current = NullCursor; pSprite->current = NullCursor;

View File

@ -235,10 +235,7 @@ mieqProcessInputEvents()
* Use dev to get the correct processing function but supply * Use dev to get the correct processing function but supply
* e->pDev to pass the correct device * e->pDev to pass the correct device
*/ */
if (e->pDev->isMPDev) dev->public.processInputProc(e->event, e->pDev, e->nevents);
dev->public.processInputProc(e->event, e->pDev, e->nevents);
else
dev->public.processInputProc(e->event, dev, e->nevents);
} }
/* Update the sprite now. Next event may be from different device. */ /* Update the sprite now. Next event may be from different device. */