diff options
-rw-r--r-- | Xext/panoramiX.c | 181 | ||||
-rw-r--r-- | Xext/panoramiX.h | 1 | ||||
-rw-r--r-- | Xext/panoramiXprocs.c | 364 | ||||
-rw-r--r-- | Xext/panoramiXsrv.h | 3 | ||||
-rw-r--r-- | Xext/shm.c | 38 | ||||
-rw-r--r-- | Xext/xvdisp.c | 28 | ||||
-rw-r--r-- | Xi/xiquerypointer.c | 5 | ||||
-rw-r--r-- | dix/events.c | 8 | ||||
-rw-r--r-- | dix/window.c | 6 | ||||
-rw-r--r-- | render/render.c | 134 |
10 files changed, 57 insertions, 711 deletions
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index 668831f02..c9aeb2962 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -109,41 +109,13 @@ static void PanoramiXResetProc(ExtensionEntry*); int (* SavedProcVector[256]) (ClientPtr client) = { NULL, }; -static DevPrivateKeyRec PanoramiXGCKeyRec; -#define PanoramiXGCKey (&PanoramiXGCKeyRec) static DevPrivateKeyRec PanoramiXScreenKeyRec; #define PanoramiXScreenKey (&PanoramiXScreenKeyRec) typedef struct { - DDXPointRec clipOrg; - DDXPointRec patOrg; - GCFuncs *wrapFuncs; -} PanoramiXGCRec, *PanoramiXGCPtr; - -typedef struct { - CreateGCProcPtr CreateGC; CloseScreenProcPtr CloseScreen; } PanoramiXScreenRec, *PanoramiXScreenPtr; -static void XineramaValidateGC(GCPtr, unsigned long, DrawablePtr); -static void XineramaChangeGC(GCPtr, unsigned long); -static void XineramaCopyGC(GCPtr, unsigned long, GCPtr); -static void XineramaDestroyGC(GCPtr); - -static GCFuncs XineramaGCFuncs = { - XineramaValidateGC, XineramaChangeGC, XineramaCopyGC, XineramaDestroyGC, -}; - -#define Xinerama_GC_FUNC_PROLOGUE(pGC)\ - PanoramiXGCPtr pGCPriv = (PanoramiXGCPtr) \ - dixLookupPrivate(&(pGC)->devPrivates, PanoramiXGCKey); \ - (pGC)->funcs = pGCPriv->wrapFuncs; - -#define Xinerama_GC_FUNC_EPILOGUE(pGC)\ - pGCPriv->wrapFuncs = (pGC)->funcs;\ - (pGC)->funcs = &XineramaGCFuncs; - - static Bool XineramaCloseScreen (int i, ScreenPtr pScreen) { @@ -151,7 +123,6 @@ XineramaCloseScreen (int i, ScreenPtr pScreen) dixLookupPrivate(&pScreen->devPrivates, PanoramiXScreenKey); pScreen->CloseScreen = pScreenPriv->CloseScreen; - pScreen->CreateGC = pScreenPriv->CreateGC; if (pScreen->myNum == 0) RegionUninit(&PanoramiXScreenRegion); @@ -161,140 +132,6 @@ XineramaCloseScreen (int i, ScreenPtr pScreen) return (*pScreen->CloseScreen) (i, pScreen); } -static Bool -XineramaCreateGC(GCPtr pGC) -{ - ScreenPtr pScreen = pGC->pScreen; - PanoramiXScreenPtr pScreenPriv = (PanoramiXScreenPtr) - dixLookupPrivate(&pScreen->devPrivates, PanoramiXScreenKey); - Bool ret; - - pScreen->CreateGC = pScreenPriv->CreateGC; - if((ret = (*pScreen->CreateGC)(pGC))) { - PanoramiXGCPtr pGCPriv = (PanoramiXGCPtr) - dixLookupPrivate(&pGC->devPrivates, PanoramiXGCKey); - - pGCPriv->wrapFuncs = pGC->funcs; - pGC->funcs = &XineramaGCFuncs; - - pGCPriv->clipOrg.x = pGC->clipOrg.x; - pGCPriv->clipOrg.y = pGC->clipOrg.y; - pGCPriv->patOrg.x = pGC->patOrg.x; - pGCPriv->patOrg.y = pGC->patOrg.y; - } - pScreen->CreateGC = XineramaCreateGC; - - return ret; -} - -static void -XineramaValidateGC( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw -){ - Xinerama_GC_FUNC_PROLOGUE (pGC); - - if((pDraw->type == DRAWABLE_WINDOW) && !(((WindowPtr)pDraw)->parent)) { - /* the root window */ - int x_off = pGC->pScreen->x; - int y_off = pGC->pScreen->y; - int new_val; - - new_val = pGCPriv->clipOrg.x - x_off; - if(pGC->clipOrg.x != new_val) { - pGC->clipOrg.x = new_val; - changes |= GCClipXOrigin; - } - new_val = pGCPriv->clipOrg.y - y_off; - if(pGC->clipOrg.y != new_val) { - pGC->clipOrg.y = new_val; - changes |= GCClipYOrigin; - } - new_val = pGCPriv->patOrg.x - x_off; - if(pGC->patOrg.x != new_val) { - pGC->patOrg.x = new_val; - changes |= GCTileStipXOrigin; - } - new_val = pGCPriv->patOrg.y - y_off; - if(pGC->patOrg.y != new_val) { - pGC->patOrg.y = new_val; - changes |= GCTileStipYOrigin; - } - } else { - if(pGC->clipOrg.x != pGCPriv->clipOrg.x) { - pGC->clipOrg.x = pGCPriv->clipOrg.x; - changes |= GCClipXOrigin; - } - if(pGC->clipOrg.y != pGCPriv->clipOrg.y) { - pGC->clipOrg.y = pGCPriv->clipOrg.y; - changes |= GCClipYOrigin; - } - if(pGC->patOrg.x != pGCPriv->patOrg.x) { - pGC->patOrg.x = pGCPriv->patOrg.x; - changes |= GCTileStipXOrigin; - } - if(pGC->patOrg.y != pGCPriv->patOrg.y) { - pGC->patOrg.y = pGCPriv->patOrg.y; - changes |= GCTileStipYOrigin; - } - } - - (*pGC->funcs->ValidateGC)(pGC, changes, pDraw); - Xinerama_GC_FUNC_EPILOGUE (pGC); -} - -static void -XineramaDestroyGC(GCPtr pGC) -{ - Xinerama_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->DestroyGC)(pGC); - Xinerama_GC_FUNC_EPILOGUE (pGC); -} - -static void -XineramaChangeGC ( - GCPtr pGC, - unsigned long mask -){ - Xinerama_GC_FUNC_PROLOGUE (pGC); - - if(mask & GCTileStipXOrigin) - pGCPriv->patOrg.x = pGC->patOrg.x; - if(mask & GCTileStipYOrigin) - pGCPriv->patOrg.y = pGC->patOrg.y; - if(mask & GCClipXOrigin) - pGCPriv->clipOrg.x = pGC->clipOrg.x; - if(mask & GCClipYOrigin) - pGCPriv->clipOrg.y = pGC->clipOrg.y; - - (*pGC->funcs->ChangeGC) (pGC, mask); - Xinerama_GC_FUNC_EPILOGUE (pGC); -} - -static void -XineramaCopyGC ( - GCPtr pGCSrc, - unsigned long mask, - GCPtr pGCDst -){ - PanoramiXGCPtr pSrcPriv = (PanoramiXGCPtr) - dixLookupPrivate(&pGCSrc->devPrivates, PanoramiXGCKey); - Xinerama_GC_FUNC_PROLOGUE (pGCDst); - - if(mask & GCTileStipXOrigin) - pGCPriv->patOrg.x = pSrcPriv->patOrg.x; - if(mask & GCTileStipYOrigin) - pGCPriv->patOrg.y = pSrcPriv->patOrg.y; - if(mask & GCClipXOrigin) - pGCPriv->clipOrg.x = pSrcPriv->clipOrg.x; - if(mask & GCClipYOrigin) - pGCPriv->clipOrg.y = pSrcPriv->clipOrg.y; - - (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst); - Xinerama_GC_FUNC_EPILOGUE (pGCDst); -} - int XineramaDeleteResource(pointer data, XID id) { @@ -422,11 +259,6 @@ void PanoramiXExtensionInit(int argc, char *argv[]) return; } - if (!dixRegisterPrivateKey(&PanoramiXGCKeyRec, PRIVATE_GC, sizeof(PanoramiXGCRec))) { - noPanoramiXExtension = TRUE; - return; - } - PanoramiXNumScreens = screenInfo.numScreens; if (PanoramiXNumScreens == 1) { /* Only 1 screen */ noPanoramiXExtension = TRUE; @@ -456,10 +288,8 @@ void PanoramiXExtensionInit(int argc, char *argv[]) return; } - pScreenPriv->CreateGC = pScreen->CreateGC; pScreenPriv->CloseScreen = pScreen->CloseScreen; - pScreen->CreateGC = XineramaCreateGC; pScreen->CloseScreen = XineramaCloseScreen; } @@ -1117,8 +947,7 @@ XineramaGetImageData( unsigned int format, unsigned long planemask, char *data, - int pitch, - Bool isRoot + int pitch ){ RegionRec SrcRegion, ScreenRegion, GrabRegion; BoxRec SrcBox, *pbox; @@ -1129,12 +958,8 @@ XineramaGetImageData( size = 0; /* find box in logical screen space */ - SrcBox.x1 = left; - SrcBox.y1 = top; - if(!isRoot) { - SrcBox.x1 += pDraw->x + screenInfo.screens[0]->x; - SrcBox.y1 += pDraw->y + screenInfo.screens[0]->y; - } + SrcBox.x1 = left + pDraw->x + screenInfo.screens[0]->x; + SrcBox.y1 = top + pDraw->y + screenInfo.screens[0]->y; SrcBox.x2 = SrcBox.x1 + width; SrcBox.y2 = SrcBox.y1 + height; diff --git a/Xext/panoramiX.h b/Xext/panoramiX.h index 71651e558..fcfac0e5a 100644 --- a/Xext/panoramiX.h +++ b/Xext/panoramiX.h @@ -76,5 +76,4 @@ typedef struct { #define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared) -#define IS_ROOT_DRAWABLE(d) (((d)->type == XRT_WINDOW) && (d)->u.win.root) #endif /* _PANORAMIX_H_ */ diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c index 9ea461173..306d956bf 100644 --- a/Xext/panoramiXprocs.c +++ b/Xext/panoramiXprocs.c @@ -61,9 +61,7 @@ int PanoramiXCreateWindow(ClientPtr client) REQUEST(xCreateWindowReq); int pback_offset = 0, pbord_offset = 0, cmap_offset = 0; int result, len, j; - int orig_x, orig_y; XID orig_visual, tmp; - Bool parentIsRoot; REQUEST_AT_LEAST_SIZE(xCreateWindowReq); @@ -125,17 +123,9 @@ int PanoramiXCreateWindow(ClientPtr client) if (stuff->class == InputOnly) stuff->visual = CopyFromParent; orig_visual = stuff->visual; - orig_x = stuff->x; - orig_y = stuff->y; - parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id) || - (stuff->parent == screenInfo.screens[0]->screensaver.wid); FOR_NSCREENS_BACKWARD(j) { stuff->wid = newWin->info[j].id; stuff->parent = parent->info[j].id; - if (parentIsRoot) { - stuff->x = orig_x - screenInfo.screens[j]->x; - stuff->y = orig_y - screenInfo.screens[j]->y; - } if (backPix) *((CARD32 *) &stuff[1] + pback_offset) = backPix->info[j].id; if (bordPix) @@ -308,8 +298,6 @@ int PanoramiXReparentWindow(ClientPtr client) { PanoramiXRes *win, *parent; int result, j; - int x, y; - Bool parentIsRoot; REQUEST(xReparentWindowReq); REQUEST_SIZE_MATCH(xReparentWindowReq); @@ -324,17 +312,9 @@ int PanoramiXReparentWindow(ClientPtr client) if (result != Success) return result; - x = stuff->x; - y = stuff->y; - parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id) || - (stuff->parent == screenInfo.screens[0]->screensaver.wid); FOR_NSCREENS_BACKWARD(j) { stuff->window = win->info[j].id; stuff->parent = parent->info[j].id; - if(parentIsRoot) { - stuff->x = x - screenInfo.screens[j]->x; - stuff->y = y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_ReparentWindow])(client); if(result != Success) break; } @@ -439,10 +419,7 @@ int PanoramiXConfigureWindow(ClientPtr client) { PanoramiXRes *win; PanoramiXRes *sib = NULL; - WindowPtr pWin; - int result, j, len, sib_offset = 0, x = 0, y = 0; - int x_offset = -1; - int y_offset = -1; + int result, j, len, sib_offset = 0; REQUEST(xConfigureWindowReq); REQUEST_AT_LEAST_SIZE(xConfigureWindowReq); @@ -451,12 +428,6 @@ int PanoramiXConfigureWindow(ClientPtr client) if (Ones(stuff->mask) != len) return BadLength; - /* because we need the parent */ - result = dixLookupResourceByType((pointer *)&pWin, stuff->window, - RT_WINDOW, client, DixWriteAccess); - if (result != Success) - return result; - result = dixLookupResourceByType((pointer *)&win, stuff->window, XRT_WINDOW, client, DixWriteAccess); if (result != Success) @@ -473,29 +444,12 @@ int PanoramiXConfigureWindow(ClientPtr client) } } - if(pWin->parent && ((pWin->parent == screenInfo.screens[0]->root) || - (pWin->parent->drawable.id == screenInfo.screens[0]->screensaver.wid))) - { - if ((Mask)stuff->mask & CWX) { - x_offset = 0; - x = *((CARD32 *)&stuff[1]); - } - if ((Mask)stuff->mask & CWY) { - y_offset = (x_offset == -1) ? 0 : 1; - y = *((CARD32 *) &stuff[1] + y_offset); - } - } - /* have to go forward or you get expose events before ConfigureNotify events */ FOR_NSCREENS_FORWARD(j) { stuff->window = win->info[j].id; if(sib) *((CARD32 *) &stuff[1] + sib_offset) = sib->info[j].id; - if(x_offset >= 0) - *((CARD32 *) &stuff[1] + x_offset) = x - screenInfo.screens[j]->x; - if(y_offset >= 0) - *((CARD32 *) &stuff[1] + y_offset) = y - screenInfo.screens[j]->y; result = (*SavedProcVector[X_ConfigureWindow])(client); if(result != Success) break; } @@ -594,15 +548,8 @@ int PanoramiXTranslateCoords(ClientPtr client) rep.sameScreen = xTrue; rep.child = None; - if((pWin == screenInfo.screens[0]->root) || - (pWin->drawable.id == screenInfo.screens[0]->screensaver.wid)) - { - x = stuff->srcX - screenInfo.screens[0]->x; - y = stuff->srcY - screenInfo.screens[0]->y; - } else { - x = pWin->drawable.x + stuff->srcX; - y = pWin->drawable.y + stuff->srcY; - } + x = pWin->drawable.x + stuff->srcX; + y = pWin->drawable.y + stuff->srcY; pWin = pDst->firstChild; while (pWin) { BoxRec box; @@ -631,12 +578,6 @@ int PanoramiXTranslateCoords(ClientPtr client) } rep.dstX = x - pDst->drawable.x; rep.dstY = y - pDst->drawable.y; - if((pDst == screenInfo.screens[0]->root) || - (pDst->drawable.id == screenInfo.screens[0]->screensaver.wid)) - { - rep.dstX += screenInfo.screens[0]->x; - rep.dstY += screenInfo.screens[0]->y; - } WriteReplyToClient(client, sizeof(xTranslateCoordsReply), &rep); return Success; @@ -957,8 +898,7 @@ int PanoramiXFreeGC(ClientPtr client) int PanoramiXClearToBackground(ClientPtr client) { PanoramiXRes *win; - int result, j, x, y; - Bool isRoot; + int result, j; REQUEST(xClearAreaReq); REQUEST_SIZE_MATCH(xClearAreaReq); @@ -968,15 +908,18 @@ int PanoramiXClearToBackground(ClientPtr client) if (result != Success) return result; - x = stuff->x; - y = stuff->y; - isRoot = win->u.win.root; + if (win->u.win.root) + { + xWindowRoot *root = (xWindowRoot *) (ConnectionInfo + connBlockScreenStart); + + if (!stuff->width) + stuff->width = root->pixWidth - stuff->x; + if (!stuff->height) + stuff->height = root->pixHeight - stuff->y; + } + FOR_NSCREENS_BACKWARD(j) { stuff->window = win->info[j].id; - if(isRoot) { - stuff->x = x - screenInfo.screens[j]->x; - stuff->y = y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_ClearArea])(client); if(result != Success) break; } @@ -997,10 +940,8 @@ int PanoramiXClearToBackground(ClientPtr client) int PanoramiXCopyArea(ClientPtr client) { - int j, result, srcx, srcy, dstx, dsty; + int j, result; PanoramiXRes *gc, *src, *dst; - Bool srcIsRoot = FALSE; - Bool dstIsRoot = FALSE; Bool srcShared, dstShared; REQUEST(xCopyAreaReq); @@ -1028,13 +969,6 @@ int PanoramiXCopyArea(ClientPtr client) if (result != Success) return result; - if((dst->type == XRT_WINDOW) && dst->u.win.root) - dstIsRoot = TRUE; - if((src->type == XRT_WINDOW) && src->u.win.root) - srcIsRoot = TRUE; - - srcx = stuff->srcX; srcy = stuff->srcY; - dstx = stuff->dstX; dsty = stuff->dstY; if((dst->type == XRT_PIXMAP) && (src->type == XRT_WINDOW)) { DrawablePtr drawables[MAXSCREENS]; DrawablePtr pDst; @@ -1053,9 +987,8 @@ int PanoramiXCopyArea(ClientPtr client) if(!(data = calloc(1, stuff->height * pitch))) return BadAlloc; - XineramaGetImageData(drawables, srcx, srcy, - stuff->width, stuff->height, ZPixmap, ~0, data, pitch, - srcIsRoot); + XineramaGetImageData(drawables, stuff->srcX, stuff->srcY, + stuff->width, stuff->height, ZPixmap, ~0, data, pitch); FOR_NSCREENS_BACKWARD(j) { stuff->gc = gc->info[j].id; @@ -1066,7 +999,7 @@ int PanoramiXCopyArea(ClientPtr client) return BadMatch; } - (*pGC->ops->PutImage) (pDst, pGC, pDst->depth, dstx, dsty, + (*pGC->ops->PutImage) (pDst, pGC, pDst->depth, stuff->dstX, stuff->dstY, stuff->width, stuff->height, 0, ZPixmap, data); @@ -1086,14 +1019,6 @@ int PanoramiXCopyArea(ClientPtr client) stuff->dstDrawable = dst->info[j].id; stuff->srcDrawable = src->info[j].id; stuff->gc = gc->info[j].id; - if (srcIsRoot) { - stuff->srcX = srcx - screenInfo.screens[j]->x; - stuff->srcY = srcy - screenInfo.screens[j]->y; - } - if (dstIsRoot) { - stuff->dstX = dstx - screenInfo.screens[j]->x; - stuff->dstY = dsty - screenInfo.screens[j]->y; - } VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, DixWriteAccess); @@ -1116,10 +1041,6 @@ int PanoramiXCopyArea(ClientPtr client) stuff->width, stuff->height, stuff->dstX, stuff->dstY); if(pGC->graphicsExposures && pRgn) { - if(srcIsRoot) { - RegionTranslate(pRgn, - screenInfo.screens[j]->x, screenInfo.screens[j]->y); - } RegionAppend(&totalReg, pRgn); RegionDestroy(pRgn); } @@ -1143,10 +1064,8 @@ int PanoramiXCopyArea(ClientPtr client) int PanoramiXCopyPlane(ClientPtr client) { - int j, srcx, srcy, dstx, dsty, rc; + int j, rc; PanoramiXRes *gc, *src, *dst; - Bool srcIsRoot = FALSE; - Bool dstIsRoot = FALSE; Bool srcShared, dstShared; DrawablePtr psrcDraw, pdstDraw = NULL; GCPtr pGC = NULL; @@ -1177,28 +1096,12 @@ int PanoramiXCopyPlane(ClientPtr client) if (rc != Success) return rc; - if((dst->type == XRT_WINDOW) && dst->u.win.root) - dstIsRoot = TRUE; - if((src->type == XRT_WINDOW) && src->u.win.root) - srcIsRoot = TRUE; - - srcx = stuff->srcX; srcy = stuff->srcY; - dstx = stuff->dstX; dsty = stuff->dstY; - RegionNull(&totalReg); FOR_NSCREENS_BACKWARD(j) { RegionPtr pRgn; stuff->dstDrawable = dst->info[j].id; stuff->srcDrawable = src->info[j].id; stuff->gc = gc->info[j].id; - if (srcIsRoot) { - stuff->srcX = srcx - screenInfo.screens[j]->x; - stuff->srcY = srcy - screenInfo.screens[j]->y; - } - if (dstIsRoot) { - stuff->dstX = dstx - screenInfo.screens[j]->x; - stuff->dstY = dsty - screenInfo.screens[j]->y; - } VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, DixWriteAccess); if (stuff->dstDrawable != stuff->srcDrawable) { @@ -1250,7 +1153,6 @@ int PanoramiXPolyPoint(ClientPtr client) PanoramiXRes *gc, *draw; int result, npoint, j; xPoint *origPts; - Bool isRoot; REQUEST(xPolyPointReq); REQUEST_AT_LEAST_SIZE(xPolyPointReq); @@ -1268,7 +1170,6 @@ int PanoramiXPolyPoint(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyPointReq)); if (npoint > 0) { origPts = malloc(npoint * sizeof(xPoint)); @@ -1277,22 +1178,6 @@ int PanoramiXPolyPoint(ClientPtr client) if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xPoint *pnts = (xPoint*)&stuff[1]; - int i = (stuff->coordMode==CoordModePrevious) ? 1 : npoint; - - while(i--) { - pnts->x -= x_off; - pnts->y -= y_off; - pnts++; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyPoint])(client); @@ -1310,7 +1195,6 @@ int PanoramiXPolyLine(ClientPtr client) PanoramiXRes *gc, *draw; int result, npoint, j; xPoint *origPts; - Bool isRoot; REQUEST(xPolyLineReq); REQUEST_AT_LEAST_SIZE(xPolyLineReq); @@ -1328,7 +1212,6 @@ int PanoramiXPolyLine(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyLineReq)); if (npoint > 0){ origPts = malloc(npoint * sizeof(xPoint)); @@ -1337,22 +1220,6 @@ int PanoramiXPolyLine(ClientPtr client) if(j) memcpy(&stuff[1], origPts, npoint * sizeof(xPoint)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xPoint *pnts = (xPoint*)&stuff[1]; - int i = (stuff->coordMode==CoordModePrevious) ? 1 : npoint; - - while(i--) { - pnts->x -= x_off; - pnts->y -= y_off; - pnts++; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyLine])(client); @@ -1367,10 +1234,9 @@ int PanoramiXPolyLine(ClientPtr client) int PanoramiXPolySegment(ClientPtr client) { - int result, nsegs, i, j; + int result, nsegs, j; PanoramiXRes *gc, *draw; xSegment *origSegs; - Bool isRoot; REQUEST(xPolySegmentReq); REQUEST_AT_LEAST_SIZE(xPolySegmentReq); @@ -1388,8 +1254,6 @@ int PanoramiXPolySegment(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - nsegs = (client->req_len << 2) - sizeof(xPolySegmentReq); if(nsegs & 4) return BadLength; nsegs >>= 3; @@ -1400,22 +1264,6 @@ int PanoramiXPolySegment(ClientPtr client) if(j) memcpy(&stuff[1], origSegs, nsegs * sizeof(xSegment)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xSegment *segs = (xSegment*)&stuff[1]; - - for (i = nsegs; i--; segs++) { - segs->x1 -= x_off; - segs->x2 -= x_off; - segs->y1 -= y_off; - segs->y2 -= y_off; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolySegment])(client); @@ -1430,9 +1278,8 @@ int PanoramiXPolySegment(ClientPtr client) int PanoramiXPolyRectangle(ClientPtr client) { - int result, nrects, i, j; + int result, nrects, j; PanoramiXRes *gc, *draw; - Bool isRoot; xRectangle *origRecs; REQUEST(xPolyRectangleReq); @@ -1451,8 +1298,6 @@ int PanoramiXPolyRectangle(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - nrects = (client->req_len << 2) - sizeof(xPolyRectangleReq); if(nrects & 4) return BadLength; nrects >>= 3; @@ -1463,21 +1308,6 @@ int PanoramiXPolyRectangle(ClientPtr client) if(j) memcpy(&stuff[1], origRecs, nrects * sizeof(xRectangle)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - - if(x_off || y_off) { - xRectangle *rects = (xRectangle *) &stuff[1]; - - for (i = nrects; i--; rects++) { - rects->x -= x_off; - rects->y -= y_off; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyRectangle])(client); @@ -1492,9 +1322,8 @@ int PanoramiXPolyRectangle(ClientPtr client) int PanoramiXPolyArc(ClientPtr client) { - int result, narcs, i, j; + int result, narcs, j; PanoramiXRes *gc, *draw; - Bool isRoot; xArc *origArcs; REQUEST(xPolyArcReq); @@ -1513,8 +1342,6 @@ int PanoramiXPolyArc(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - narcs = (client->req_len << 2) - sizeof(xPolyArcReq); if(narcs % sizeof(xArc)) return BadLength; narcs /= sizeof(xArc); @@ -1525,19 +1352,6 @@ int PanoramiXPolyArc(ClientPtr client) if(j) memcpy(&stuff[1], origArcs, narcs * sizeof(xArc)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xArc *arcs = (xArc *) &stuff[1]; - - for (i = narcs; i--; arcs++) { - arcs->x -= x_off; - arcs->y -= y_off; - } - } - } stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyArc])(client); @@ -1554,7 +1368,6 @@ int PanoramiXFillPoly(ClientPtr client) { int result, count, j; PanoramiXRes *gc, *draw; - Bool isRoot; DDXPointPtr locPts; REQUEST(xFillPolyReq); @@ -1573,8 +1386,6 @@ int PanoramiXFillPoly(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - count = bytes_to_int32((client->req_len << 2) - sizeof(xFillPolyReq)); if (count > 0){ locPts = malloc(count * sizeof(DDXPointRec)); @@ -1583,22 +1394,6 @@ int PanoramiXFillPoly(ClientPtr client) if(j) memcpy(&stuff[1], locPts, count * sizeof(DDXPointRec)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - DDXPointPtr pnts = (DDXPointPtr)&stuff[1]; - int i = (stuff->coordMode==CoordModePrevious) ? 1 : count; - - while(i--) { - pnts->x -= x_off; - pnts->y -= y_off; - pnts++; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_FillPoly])(client); @@ -1613,9 +1408,8 @@ int PanoramiXFillPoly(ClientPtr client) int PanoramiXPolyFillRectangle(ClientPtr client) { - int result, things, i, j; + int result, things, j; PanoramiXRes *gc, *draw; - Bool isRoot; xRectangle *origRects; REQUEST(xPolyFillRectangleReq); @@ -1634,8 +1428,6 @@ int PanoramiXPolyFillRectangle(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - things = (client->req_len << 2) - sizeof(xPolyFillRectangleReq); if(things & 4) return BadLength; things >>= 3; @@ -1646,20 +1438,6 @@ int PanoramiXPolyFillRectangle(ClientPtr client) if(j) memcpy(&stuff[1], origRects, things * sizeof(xRectangle)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xRectangle *rects = (xRectangle *) &stuff[1]; - - for (i = things; i--; rects++) { - rects->x -= x_off; - rects->y -= y_off; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyFillRectangle])(client); @@ -1675,8 +1453,7 @@ int PanoramiXPolyFillRectangle(ClientPtr client) int PanoramiXPolyFillArc(ClientPtr client) { PanoramiXRes *gc, *draw; - Bool isRoot; - int result, narcs, i, j; + int result, narcs, j; xArc *origArcs; REQUEST(xPolyFillArcReq); @@ -1695,8 +1472,6 @@ int PanoramiXPolyFillArc(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - narcs = (client->req_len << 2) - sizeof(xPolyFillArcReq); if (narcs % sizeof(xArc)) return BadLength; narcs /= sizeof(xArc); @@ -1707,20 +1482,6 @@ int PanoramiXPolyFillArc(ClientPtr client) if(j) memcpy(&stuff[1], origArcs, narcs * sizeof(xArc)); - if (isRoot) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xArc *arcs = (xArc *) &stuff[1]; - - for (i = narcs; i--; arcs++) { - arcs->x -= x_off; - arcs->y -= y_off; - } - } - } - stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PolyFillArc])(client); @@ -1736,8 +1497,7 @@ int PanoramiXPolyFillArc(ClientPtr client) int PanoramiXPutImage(ClientPtr client) { PanoramiXRes *gc, *draw; - Bool isRoot; - int j, result, orig_x, orig_y; + int j, result; REQUEST(xPutImageReq); REQUEST_AT_LEAST_SIZE(xPutImageReq); @@ -1755,15 +1515,7 @@ int PanoramiXPutImage(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - - orig_x = stuff->dstX; - orig_y = stuff->dstY; FOR_NSCREENS_BACKWARD(j){ - if (isRoot) { - stuff->dstX = orig_x - screenInfo.screens[j]->x; - stuff->dstY = orig_y - screenInfo.screens[j]->y; - } stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; result = (* SavedProcVector[X_PutImage])(client); @@ -1779,7 +1531,6 @@ int PanoramiXGetImage(ClientPtr client) DrawablePtr pDraw; PanoramiXRes *draw; xGetImageReply xgi; - Bool isRoot; char *pBuf; int i, x, y, w, h, format, rc; Mask plane = 0, planemask; @@ -1818,20 +1569,15 @@ int PanoramiXGetImage(ClientPtr client) format = stuff->format; planemask = stuff->planeMask; - isRoot = IS_ROOT_DRAWABLE(draw); + /* check for being onscreen */ + if(screenInfo.screens[0]->x + pDraw->x + x < 0 || + screenInfo.screens[0]->x + pDraw->x + x + w > PanoramiXPixWidth || + screenInfo.screens[0]->y + pDraw->y + y < 0 || + screenInfo.screens[0]->y + pDraw->y + y + h > PanoramiXPixHeight) + return BadMatch; - if(isRoot) { - if( /* check for being onscreen */ - x < 0 || x + w > PanoramiXPixWidth || - y < 0 || y + h > PanoramiXPixHeight ) - return BadMatch; - } else { - if( /* check for being onscreen */ - screenInfo.screens[0]->x + pDraw->x + x < 0 || - screenInfo.screens[0]->x + pDraw->x + x + w > PanoramiXPixWidth || - screenInfo.screens[0]->y + pDraw->y + y < 0 || - screenInfo.screens[0]->y + pDraw->y + y + h > PanoramiXPixHeight || - /* check for being inside of border */ + if(!draw->u.win.root) { + if( /* check for being inside of border */ x < - wBorderWidth((WindowPtr)pDraw) || x + w > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width || y < -wBorderWidth((WindowPtr)pDraw) || @@ -1894,7 +1640,7 @@ int PanoramiXGetImage(ClientPtr client) memset(pBuf, 0, nlines * widthBytesLine); XineramaGetImageData(drawables, x, y + linesDone, w, nlines, - format, planemask, pBuf, widthBytesLine, isRoot); + format, planemask, pBuf, widthBytesLine); (void)WriteToClient(client, (int)(nlines * widthBytesLine), @@ -1912,7 +1658,7 @@ int PanoramiXGetImage(ClientPtr client) XineramaGetImageData(drawables, x, y + linesDone, w, nlines, format, plane, pBuf, - widthBytesLine, isRoot); + widthBytesLine); (void)WriteToClient(client, (int)(nlines * widthBytesLine), @@ -1936,9 +1682,7 @@ int PanoramiXPolyText8(ClientPtr client) { PanoramiXRes *gc, *draw; - Bool isRoot; int result, j; - int orig_x, orig_y; REQUEST(xPolyTextReq); REQUEST_AT_LEAST_SIZE(xPolyTextReq); @@ -1956,17 +1700,9 @@ PanoramiXPolyText8(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - - orig_x = stuff->x; - orig_y = stuff->y; FOR_NSCREENS_BACKWARD(j){ stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->x = orig_x - screenInfo.screens[j]->x; - stuff->y = orig_y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_PolyText8])(client); if(result != Success) break; } @@ -1977,9 +1713,7 @@ int PanoramiXPolyText16(ClientPtr client) { PanoramiXRes *gc, *draw; - Bool isRoot; int result, j; - int orig_x, orig_y; REQUEST(xPolyTextReq); REQUEST_AT_LEAST_SIZE(xPolyTextReq); @@ -1997,17 +1731,9 @@ PanoramiXPolyText16(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - - orig_x = stuff->x; - orig_y = stuff->y; FOR_NSCREENS_BACKWARD(j){ stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->x = orig_x - screenInfo.screens[j]->x; - stuff->y = orig_y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_PolyText16])(client); if(result != Success) break; } @@ -2019,8 +1745,6 @@ int PanoramiXImageText8(ClientPtr client) { int result, j; PanoramiXRes *gc, *draw; - Bool isRoot; - int orig_x, orig_y; REQUEST(xImageTextReq); REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars); @@ -2038,17 +1762,9 @@ int PanoramiXImageText8(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - - orig_x = stuff->x; - orig_y = stuff->y; FOR_NSCREENS_BACKWARD(j){ stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->x = orig_x - screenInfo.screens[j]->x; - stuff->y = orig_y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_ImageText8])(client); if(result != Success) break; } @@ -2060,8 +1776,6 @@ int PanoramiXImageText16(ClientPtr client) { int result, j; PanoramiXRes *gc, *draw; - Bool isRoot; - int orig_x, orig_y; REQUEST(xImageTextReq); REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars << 1); @@ -2079,17 +1793,9 @@ int PanoramiXImageText16(ClientPtr client) if (result != Success) return result; - isRoot = IS_ROOT_DRAWABLE(draw); - - orig_x = stuff->x; - orig_y = stuff->y; FOR_NSCREENS_BACKWARD(j){ stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->x = orig_x - screenInfo.screens[j]->x; - stuff->y = orig_y - screenInfo.screens[j]->y; - } result = (*SavedProcVector[X_ImageText16])(client); if(result != Success) break; } diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h index 39d495203..b673052cd 100644 --- a/Xext/panoramiXsrv.h +++ b/Xext/panoramiXsrv.h @@ -47,8 +47,7 @@ extern _X_EXPORT void XineramaGetImageData( unsigned int format, unsigned long planemask, char *data, - int pitch, - Bool isRoot + int pitch ); static inline void panoramix_setup_ids(PanoramiXRes *resource, diff --git a/Xext/shm.c b/Xext/shm.c index 7ca027a90..668b3e01a 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -740,9 +740,9 @@ ProcShmGetImage(ClientPtr client) static int ProcPanoramiXShmPutImage(ClientPtr client) { - int j, result, orig_x, orig_y; + int j, result; PanoramiXRes *draw, *gc; - Bool sendEvent, isRoot; + Bool sendEvent; REQUEST(xShmPutImageReq); REQUEST_SIZE_MATCH(xShmPutImageReq); @@ -757,20 +757,12 @@ ProcPanoramiXShmPutImage(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - orig_x = stuff->dstX; - orig_y = stuff->dstY; sendEvent = stuff->sendEvent; stuff->sendEvent = 0; FOR_NSCREENS(j) { if(!j) stuff->sendEvent = sendEvent; stuff->drawable = draw->info[j].id; stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->dstX = orig_x - screenInfo.screens[j]->x; - stuff->dstY = orig_y - screenInfo.screens[j]->y; - } result = ProcShmPutImage(client); if(result != Success) break; } @@ -788,7 +780,6 @@ ProcPanoramiXShmGetImage(ClientPtr client) int i, x, y, w, h, format, rc; Mask plane = 0, planemask; long lenPer = 0, length, widthBytesLine; - Bool isRoot; REQUEST(xShmGetImageReq); @@ -821,20 +812,15 @@ ProcPanoramiXShmGetImage(ClientPtr client) format = stuff->format; planemask = stuff->planeMask; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; + /* check for being onscreen */ + if(screenInfo.screens[0]->x + pDraw->x + x < 0 || + screenInfo.screens[0]->x + pDraw->x + x + w > PanoramiXPixWidth || + screenInfo.screens[0]->y + pDraw->y + y < 0 || + screenInfo.screens[0]->y + pDraw->y + y + h > PanoramiXPixHeight) + return BadMatch; - if(isRoot) { - if( /* check for being onscreen */ - x < 0 || x + w > PanoramiXPixWidth || - y < 0 || y + h > PanoramiXPixHeight ) - return BadMatch; - } else { - if( /* check for being onscreen */ - screenInfo.screens[0]->x + pDraw->x + x < 0 || - screenInfo.screens[0]->x + pDraw->x + x + w > PanoramiXPixWidth || - screenInfo.screens[0]->y + pDraw->y + y < 0 || - screenInfo.screens[0]->y + pDraw->y + y + h > PanoramiXPixHeight || - /* check for being inside of border */ + if(!draw->u.win.root) { + if( /* check for being inside of border */ x < - wBorderWidth((WindowPtr)pDraw) || x + w > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width || y < -wBorderWidth((WindowPtr)pDraw) || @@ -880,7 +866,7 @@ ProcPanoramiXShmGetImage(ClientPtr client) else if (format == ZPixmap) { XineramaGetImageData(drawables, x, y, w, h, format, planemask, shmdesc->addr + stuff->offset, - widthBytesLine, isRoot); + widthBytesLine); } else { length = stuff->offset; @@ -888,7 +874,7 @@ ProcPanoramiXShmGetImage(ClientPtr client) if (planemask & plane) { XineramaGetImageData(drawables, x, y, w, h, format, plane, shmdesc->addr + length, - widthBytesLine, isRoot); + widthBytesLine); length += lenPer; } } diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c index 0795a1475..c513e8c54 100644 --- a/Xext/xvdisp.c +++ b/Xext/xvdisp.c @@ -1610,7 +1610,6 @@ XineramaXvShmPutImage(ClientPtr client) REQUEST(xvShmPutImageReq); PanoramiXRes *draw, *gc, *port; Bool send_event = stuff->send_event; - Bool isRoot; int result, i, x, y; REQUEST_SIZE_MATCH(xvShmPutImageReq); @@ -1630,8 +1629,6 @@ XineramaXvShmPutImage(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - x = stuff->drw_x; y = stuff->drw_y; @@ -1642,10 +1639,6 @@ XineramaXvShmPutImage(ClientPtr client) stuff->gc = gc->info[i].id; stuff->drw_x = x; stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= screenInfo.screens[i]->x; - stuff->drw_y -= screenInfo.screens[i]->y; - } stuff->send_event = (send_event && !i) ? 1 : 0; result = ProcXvShmPutImage(client); @@ -1662,7 +1655,6 @@ XineramaXvPutImage(ClientPtr client) { REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; - Bool isRoot; int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutImageReq); @@ -1682,8 +1674,6 @@ XineramaXvPutImage(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - x = stuff->drw_x; y = stuff->drw_y; @@ -1694,10 +1684,6 @@ XineramaXvPutImage(ClientPtr client) stuff->gc = gc->info[i].id; stuff->drw_x = x; stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= screenInfo.screens[i]->x; - stuff->drw_y -= screenInfo.screens[i]->y; - } result = ProcXvPutImage(client); } @@ -1710,7 +1696,6 @@ XineramaXvPutVideo(ClientPtr client) { REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; - Bool isRoot; int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutVideoReq); @@ -1730,8 +1715,6 @@ XineramaXvPutVideo(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - x = stuff->drw_x; y = stuff->drw_y; @@ -1742,10 +1725,6 @@ XineramaXvPutVideo(ClientPtr client) stuff->gc = gc->info[i].id; stuff->drw_x = x; stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= screenInfo.screens[i]->x; - stuff->drw_y -= screenInfo.screens[i]->y; - } result = ProcXvPutVideo(client); } @@ -1758,7 +1737,6 @@ XineramaXvPutStill(ClientPtr client) { REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; - Bool isRoot; int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutImageReq); @@ -1778,8 +1756,6 @@ XineramaXvPutStill(ClientPtr client) if (result != Success) return result; - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - x = stuff->drw_x; y = stuff->drw_y; @@ -1790,10 +1766,6 @@ XineramaXvPutStill(ClientPtr client) stuff->gc = gc->info[i].id; stuff->drw_x = x; stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= screenInfo.screens[i]->x; - stuff->drw_y -= screenInfo.screens[i]->y; - } result = ProcXvPutStill(client); } diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c index d01a81394..8cfcb5569 100644 --- a/Xi/xiquerypointer.c +++ b/Xi/xiquerypointer.c @@ -182,11 +182,6 @@ ProcXIQueryPointer(ClientPtr client) if(!noPanoramiXExtension) { rep.root_x += FP1616(screenInfo.screens[0]->x, 0); rep.root_y += FP1616(screenInfo.screens[0]->y, 0); - if (stuff->win == rep.root) - { - rep.win_x += FP1616(screenInfo.screens[0]->x, 0); - rep.win_y += FP1616(screenInfo.screens[0]->y, 0); - } } #endif diff --git a/dix/events.c b/dix/events.c index 8dff29973..509d9c446 100644 --- a/dix/events.c +++ b/dix/events.c @@ -3452,10 +3452,6 @@ XineramaWarpPointer(ClientPtr client) winX = source->drawable.x; winY = source->drawable.y; - if(source == screenInfo.screens[0]->root) { - winX -= screenInfo.screens[0]->x; - winY -= screenInfo.screens[0]->y; - } if (x < winX + stuff->srcX || y < winY + stuff->srcY || (stuff->srcWidth != 0 && @@ -3468,10 +3464,6 @@ XineramaWarpPointer(ClientPtr client) if (dest) { x = dest->drawable.x; y = dest->drawable.y; - if(dest == screenInfo.screens[0]->root) { - x -= screenInfo.screens[0]->x; - y -= screenInfo.screens[0]->y; - } } x += stuff->dstX; diff --git a/dix/window.c b/dix/window.c index 1953f025b..ed928ebee 100644 --- a/dix/window.c +++ b/dix/window.c @@ -508,6 +508,12 @@ CreateRootWindow(ScreenPtr pScreen) pWin->drawable.height = pScreen->height; pWin->drawable.width = pScreen->width; pWin->drawable.x = pWin->drawable.y = 0; +#ifdef PANORAMIX + if(!noPanoramiXExtension) { + pWin->drawable.x = -pScreen->x; + pWin->drawable.y = -pScreen->y; + } +#endif box.x1 = 0; box.y1 = 0; diff --git a/render/render.c b/render/render.c index d82e09959..5d3ecb87a 100644 --- a/render/render.c +++ b/render/render.c @@ -2793,7 +2793,6 @@ PanoramiXRenderComposite (ClientPtr client) { PanoramiXRes *src, *msk, *dst; int result = Success, j; - xRenderCompositeReq orig; REQUEST(xRenderCompositeReq); REQUEST_SIZE_MATCH(xRenderCompositeReq); @@ -2802,30 +2801,11 @@ PanoramiXRenderComposite (ClientPtr client) VERIFY_XIN_ALPHA (msk, stuff->mask, client, DixReadAccess); VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess); - orig = *stuff; - FOR_NSCREENS_FORWARD(j) { stuff->src = src->info[j].id; - if (src->u.pict.root) - { - stuff->xSrc = orig.xSrc - screenInfo.screens[j]->x; - stuff->ySrc = orig.ySrc - screenInfo.screens[j]->y; - } stuff->dst = dst->info[j].id; - if (dst->u.pict.root) - { - stuff->xDst = orig.xDst - screenInfo.screens[j]->x; - stuff->yDst = orig.yDst - screenInfo.screens[j]->y; - } if (msk) - { stuff->mask = msk->info[j].id; - if (msk->u.pict.root) - { - stuff->xMask = orig.xMask - screenInfo.screens[j]->x; - stuff->yMask = orig.yMask - screenInfo.screens[j]->y; - } - } result = (*PanoramiXSaveRenderVector[X_RenderComposite]) (client); if(result != Success) break; } @@ -2839,8 +2819,6 @@ PanoramiXRenderCompositeGlyphs (ClientPtr client) PanoramiXRes *src, *dst; int result = Success, j; REQUEST(xRenderCompositeGlyphsReq); - xGlyphElt origElt, *elt; - INT16 xSrc, ySrc; REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess); @@ -2849,23 +2827,9 @@ PanoramiXRenderCompositeGlyphs (ClientPtr client) if (client->req_len << 2 >= (sizeof (xRenderCompositeGlyphsReq) + sizeof (xGlyphElt))) { - elt = (xGlyphElt *) (stuff + 1); - origElt = *elt; - xSrc = stuff->xSrc; - ySrc = stuff->ySrc; FOR_NSCREENS_FORWARD(j) { stuff->src = src->info[j].id; - if (src->u.pict.root) - { - stuff->xSrc = xSrc - screenInfo.screens[j]->x; - stuff->ySrc = ySrc - screenInfo.screens[j]->y; - } stuff->dst = dst->info[j].id; - if (dst->u.pict.root) - { - elt->deltax = origElt.deltax - screenInfo.screens[j]->x; - elt->deltay = origElt.deltay - screenInfo.screens[j]->y; - } result = (*PanoramiXSaveRenderVector[stuff->renderReqType]) (client); if(result != Success) break; } @@ -2892,23 +2856,6 @@ PanoramiXRenderFillRectangles (ClientPtr client) memcpy (extra, stuff + 1, extra_len); FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) - { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xRectangle *rects = (xRectangle *) (stuff + 1); - int i = extra_len / sizeof (xRectangle); - - while (i--) - { - rects->x -= x_off; - rects->y -= y_off; - rects++; - } - } - } stuff->dst = dst->info[j].id; result = (*PanoramiXSaveRenderVector[X_RenderFillRectangles]) (client); if(result != Success) break; @@ -2941,29 +2888,6 @@ PanoramiXRenderTrapezoids(ClientPtr client) FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xTrapezoid *trap = (xTrapezoid *) (stuff + 1); - int i = extra_len / sizeof (xTrapezoid); - - while (i--) { - trap->top -= y_off; - trap->bottom -= y_off; - trap->left.p1.x -= x_off; - trap->left.p1.y -= y_off; - trap->left.p2.x -= x_off; - trap->left.p2.y -= y_off; - trap->right.p1.x -= x_off; - trap->right.p1.y -= y_off; - trap->right.p2.x -= x_off; - trap->right.p2.y -= y_off; - trap++; - } - } - } stuff->src = src->info[j].id; stuff->dst = dst->info[j].id; @@ -3001,25 +2925,6 @@ PanoramiXRenderTriangles(ClientPtr client) FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xTriangle *tri = (xTriangle *) (stuff + 1); - int i = extra_len / sizeof (xTriangle); - - while (i--) { - tri->p1.x -= x_off; - tri->p1.y -= y_off; - tri->p2.x -= x_off; - tri->p2.y -= y_off; - tri->p3.x -= x_off; - tri->p3.y -= y_off; - tri++; - } - } - } stuff->src = src->info[j].id; stuff->dst = dst->info[j].id; @@ -3057,21 +2962,6 @@ PanoramiXRenderTriStrip(ClientPtr client) FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xPointFixed *fixed = (xPointFixed *) (stuff + 1); - int i = extra_len / sizeof (xPointFixed); - - while (i--) { - fixed->x -= x_off; - fixed->y -= y_off; - fixed++; - } - } - } stuff->src = src->info[j].id; stuff->dst = dst->info[j].id; @@ -3109,21 +2999,6 @@ PanoramiXRenderTriFan(ClientPtr client) FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = screenInfo.screens[j]->x; - int y_off = screenInfo.screens[j]->y; - - if(x_off || y_off) { - xPointFixed *fixed = (xPointFixed *) (stuff + 1); - int i = extra_len / sizeof (xPointFixed); - - while (i--) { - fixed->x -= x_off; - fixed->y -= y_off; - fixed++; - } - } - } stuff->src = src->info[j].id; stuff->dst = dst->info[j].id; @@ -3147,7 +3022,6 @@ PanoramiXRenderAddTraps (ClientPtr client) REQUEST(xRenderAddTrapsReq); char *extra; int extra_len; - INT16 x_off, y_off; REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq); VERIFY_XIN_PICTURE (picture, stuff->picture, client, DixWriteAccess); @@ -3156,17 +3030,9 @@ PanoramiXRenderAddTraps (ClientPtr client) (extra = (char *) malloc(extra_len))) { memcpy (extra, stuff + 1, extra_len); - x_off = stuff->xOff; - y_off = stuff->yOff; FOR_NSCREENS_FORWARD(j) { if (j) memcpy (stuff + 1, extra, extra_len); stuff->picture = picture->info[j].id; - - if (picture->u.pict.root) - { - stuff->xOff = x_off + screenInfo.screens[j]->x; - stuff->yOff = y_off + screenInfo.screens[j]->y; - } result = (*PanoramiXSaveRenderVector[X_RenderAddTraps]) (client); if(result != Success) break; } |