From a0456da339fa9b3c3e6fead060338ee7348d6460 Mon Sep 17 00:00:00 2001 From: Jamey Sharp Date: Sun, 23 May 2010 12:57:52 -0700 Subject: [PATCH] XineramaSetCursorPosition: use screen bounds directly, not POINT_IN_REGION. This hides a MAXSCREENS-sized array as an implementation detail of panoramiX.c rather than an exported global. Signed-off-by: Jamey Sharp Reviewed-by: Tiago Vignatti Tested-by: Tiago Vignatti (i686 GNU/Linux) --- Xext/panoramiX.c | 2 +- Xext/panoramiXsrv.h | 2 -- dix/events.c | 13 +++++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index b87da247de..78728a9f7f 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -119,7 +119,7 @@ typedef struct { CloseScreenProcPtr CloseScreen; } PanoramiXScreenRec, *PanoramiXScreenPtr; -RegionRec XineramaScreenRegions[MAXSCREENS]; +static RegionRec XineramaScreenRegions[MAXSCREENS]; static void XineramaValidateGC(GCPtr, unsigned long, DrawablePtr); static void XineramaChangeGC(GCPtr, unsigned long); diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h index af0017d85b..5b1a3a9902 100644 --- a/Xext/panoramiXsrv.h +++ b/Xext/panoramiXsrv.h @@ -21,8 +21,6 @@ extern _X_EXPORT int XineramaDeleteResource(pointer, XID); extern _X_EXPORT void XineramaReinitData(ScreenPtr); -extern _X_EXPORT RegionRec XineramaScreenRegions[MAXSCREENS]; - extern _X_EXPORT unsigned long XRC_DRAWABLE; extern _X_EXPORT unsigned long XRT_WINDOW; extern _X_EXPORT unsigned long XRT_PIXMAP; diff --git a/dix/events.c b/dix/events.c index e8e65e2e56..502eebd8d7 100644 --- a/dix/events.c +++ b/dix/events.c @@ -485,6 +485,13 @@ SyntheticMotion(DeviceIntPtr dev, int x, int y) { #ifdef PANORAMIX static void PostNewCursor(DeviceIntPtr pDev); +static Bool +pointOnScreen(ScreenPtr pScreen, int x, int y) +{ + return x >= pScreen->x && x < pScreen->x + pScreen->width && + y >= pScreen->y && y < pScreen->y + pScreen->height; +} + static Bool XineramaSetCursorPosition( DeviceIntPtr pDev, @@ -493,7 +500,6 @@ XineramaSetCursorPosition( Bool generateEvent ){ ScreenPtr pScreen; - BoxRec box; int i; SpritePtr pSprite = pDev->spriteInfo->sprite; @@ -505,14 +511,13 @@ XineramaSetCursorPosition( x += screenInfo.screens[0]->x; y += screenInfo.screens[0]->y; - if(!POINT_IN_REGION(pScreen, &XineramaScreenRegions[pScreen->myNum], - x, y, &box)) + if(!pointOnScreen(pScreen, x, y)) { FOR_NSCREENS(i) { if(i == pScreen->myNum) continue; - if(POINT_IN_REGION(pScreen, &XineramaScreenRegions[i], x, y, &box)) + if(pointOnScreen(screenInfo.screens[i], x, y)) { pScreen = screenInfo.screens[i]; break;