dix: reduce redunancy in XineramaConfineCursorToWindow.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-01-30 16:14:54 +10:00
parent cdce5699f0
commit bf044f6d10

View File

@ -549,52 +549,44 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev,
{ {
SpritePtr pSprite = pDev->spriteInfo->sprite; SpritePtr pSprite = pDev->spriteInfo->sprite;
if (syncEvents.playingEvents) int x, y, off_x, off_y, i;
{
CheckVirtualMotion(pDev, (QdEventPtr)NULL, pWin); if(!XineramaSetWindowPntrs(pDev, pWin))
SyntheticMotion(pDev, pSprite->hot.x, pSprite->hot.y); return;
i = PanoramiXNumScreens - 1;
REGION_COPY(pSprite->screen, &pSprite->Reg1,
&pSprite->windows[i]->borderSize);
off_x = panoramiXdataPtr[i].x;
off_y = panoramiXdataPtr[i].y;
while(i--) {
x = off_x - panoramiXdataPtr[i].x;
y = off_y - panoramiXdataPtr[i].y;
if(x || y)
REGION_TRANSLATE(pSprite->screen, &pSprite->Reg1, x, y);
REGION_UNION(pSprite->screen, &pSprite->Reg1, &pSprite->Reg1,
&pSprite->windows[i]->borderSize);
off_x = panoramiXdataPtr[i].x;
off_y = panoramiXdataPtr[i].y;
} }
pSprite->hotLimits = *REGION_EXTENTS(pSprite->screen, &pSprite->Reg1);
if(REGION_NUM_RECTS(&pSprite->Reg1) > 1)
pSprite->hotShape = &pSprite->Reg1;
else else
{ pSprite->hotShape = NullRegion;
int x, y, off_x, off_y, i;
if(!XineramaSetWindowPntrs(pDev, pWin)) pSprite->confined = FALSE;
return; pSprite->confineWin = (pWin == WindowTable[0]) ? NullWindow : pWin;
i = PanoramiXNumScreens - 1; XineramaCheckPhysLimits(pDev, pSprite->current,
generateEvents);
REGION_COPY(pSprite->screen, &pSprite->Reg1,
&pSprite->windows[i]->borderSize);
off_x = panoramiXdataPtr[i].x;
off_y = panoramiXdataPtr[i].y;
while(i--) {
x = off_x - panoramiXdataPtr[i].x;
y = off_y - panoramiXdataPtr[i].y;
if(x || y)
REGION_TRANSLATE(pSprite->screen, &pSprite->Reg1, x, y);
REGION_UNION(pSprite->screen, &pSprite->Reg1, &pSprite->Reg1,
&pSprite->windows[i]->borderSize);
off_x = panoramiXdataPtr[i].x;
off_y = panoramiXdataPtr[i].y;
}
pSprite->hotLimits = *REGION_EXTENTS(pSprite->screen, &pSprite->Reg1);
if(REGION_NUM_RECTS(&pSprite->Reg1) > 1)
pSprite->hotShape = &pSprite->Reg1;
else
pSprite->hotShape = NullRegion;
pSprite->confined = FALSE;
pSprite->confineWin = (pWin == WindowTable[0]) ? NullWindow : pWin;
XineramaCheckPhysLimits(pDev, pSprite->current,
generateEvents);
}
} }
@ -835,13 +827,6 @@ ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, Bo
ScreenPtr pScreen = pWin->drawable.pScreen; ScreenPtr pScreen = pWin->drawable.pScreen;
SpritePtr pSprite = pDev->spriteInfo->sprite; SpritePtr pSprite = pDev->spriteInfo->sprite;
#ifdef PANORAMIX
if(!noPanoramiXExtension) {
XineramaConfineCursorToWindow(pDev, pWin, generateEvents);
return;
}
#endif
if (syncEvents.playingEvents) if (syncEvents.playingEvents)
{ {
CheckVirtualMotion(pDev, (QdEventPtr)NULL, pWin); CheckVirtualMotion(pDev, (QdEventPtr)NULL, pWin);
@ -849,6 +834,12 @@ ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, Bo
} }
else else
{ {
#ifdef PANORAMIX
if(!noPanoramiXExtension) {
XineramaConfineCursorToWindow(pDev, pWin, generateEvents);
return;
}
#endif
pSprite->hotLimits = *REGION_EXTENTS( pScreen, &pWin->borderSize); pSprite->hotLimits = *REGION_EXTENTS( pScreen, &pWin->borderSize);
pSprite->hotShape = wBoundingShape(pWin) ? &pWin->borderSize pSprite->hotShape = wBoundingShape(pWin) ? &pWin->borderSize
: NullRegion; : NullRegion;