summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-10-02 15:45:39 +1000
committerDave Airlie <airlied@redhat.com>2012-10-02 15:45:39 +1000
commit3326afd8a7c19368bb9fdc4b840e774fe0b047c0 (patch)
tree68542dba2416bacdea61007cdd67e923fe4edce6
parent2dc3cd1549be495354b3c3740388e775aeb02ed5 (diff)
fb: start spitting screen from window/pixmap
-rw-r--r--fb/fb.h17
-rw-r--r--fb/fb24_32.c16
-rw-r--r--fb/fbarc.c2
-rw-r--r--fb/fbbits.h8
-rw-r--r--fb/fbcopy.c17
-rw-r--r--fb/fbfill.c10
-rw-r--r--fb/fbgc.c4
-rw-r--r--fb/fbgetsp.c2
-rw-r--r--fb/fbglyph.c4
-rw-r--r--fb/fbimage.c6
-rw-r--r--fb/fbpict.c2
-rw-r--r--fb/fbpoint.c2
-rw-r--r--fb/fbpush.c4
-rw-r--r--fb/fbscreen.c6
-rw-r--r--fb/fbseg.c8
-rw-r--r--fb/fbsetsp.c2
-rw-r--r--fb/fbwindow.c8
17 files changed, 61 insertions, 57 deletions
diff --git a/fb/fb.h b/fb/fb.h
index 40a7e38db..ae0a501e5 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -640,8 +640,8 @@ typedef struct {
#define fbGetWinPrivateKey(pWin) (&fbGetScreenPrivate(((DrawablePtr) (pWin))->pScreen)->winPrivateKeyRec)
-#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
- dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
+/*#define fbGetWindowPixmap(pWin) ((PixmapPtr) \
+ dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin))) */
#ifdef ROOTLESS
#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
@@ -661,13 +661,12 @@ typedef struct {
#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
-#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \
+#define fbGetDrawablePixmap(pScreen, pDrawable, pixmap, xoff, yoff) { \
+ (pixmap) = GetDrawablePixmap(pScreen, pDrawable); \
if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
- (pixmap) = fbGetWindowPixmap(pDrawable); \
(xoff) = __fbPixOffXWin(pixmap); \
(yoff) = __fbPixOffYWin(pixmap); \
} else { \
- (pixmap) = (PixmapPtr) (pDrawable); \
(xoff) = __fbPixOffXPix(pixmap); \
(yoff) = __fbPixOffYPix(pixmap); \
} \
@@ -686,15 +685,15 @@ typedef struct {
(bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
}
-#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
+#define fbGetDrawable(pScreen, pDrawable, pointer, stride, bpp, xoff, yoff) { \
PixmapPtr _pPix; \
- fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
+ fbGetDrawablePixmap(pScreen, pDrawable, _pPix, xoff, yoff); \
fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \
}
-#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
+#define fbGetStipDrawable(pScreen, pDrawable, pointer, stride, bpp, xoff, yoff) { \
PixmapPtr _pPix; \
- fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
+ fbGetDrawablePixmap(pScreen, pDrawable, _pPix, xoff, yoff); \
fbGetPixmapStipData(_pPix, pointer, stride, bpp); \
}
diff --git a/fb/fb24_32.c b/fb/fb24_32.c
index 5eb81e8f0..369a56ec3 100644
--- a/fb/fb24_32.c
+++ b/fb/fb24_32.c
@@ -249,7 +249,7 @@ fb24_32GetSpans(DrawablePtr pDrawable,
int srcXoff, srcYoff;
CARD8 *dst;
- fbGetDrawable(pDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
src = (CARD8 *) srcBits;
srcStride *= sizeof(FbBits);
@@ -284,7 +284,7 @@ fb24_32SetSpans(DrawablePtr pDrawable,
int n;
int x1, x2;
- fbGetDrawable(pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
dst = (CARD8 *) dstBits;
dstStride *= sizeof(FbBits);
while (nspans--) {
@@ -340,7 +340,7 @@ fb24_32PutZImage(DrawablePtr pDrawable,
BoxPtr pbox;
int x1, y1, x2, y2;
- fbGetDrawable(pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
dstStride *= sizeof(FbBits);
dst = (CARD8 *) dstBits;
@@ -385,7 +385,7 @@ fb24_32GetImage(DrawablePtr pDrawable,
FbStride dstStride;
FbBits pm;
- fbGetDrawable(pDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
src = (CARD8 *) srcBits;
srcStride *= sizeof(FbBits);
@@ -425,10 +425,10 @@ fb24_32CopyMtoN(DrawablePtr pSrcDrawable,
int srcXoff, srcYoff;
int dstXoff, dstYoff;
- fbGetDrawable(pSrcDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pSrcDrawable->pScreen, pSrcDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff);
src = (CARD8 *) srcBits;
srcStride *= sizeof(FbBits);
- fbGetDrawable(pDstDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDstDrawable->pScreen, pDstDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff);
dst = (CARD8 *) dstBits;
dstStride *= sizeof(FbBits);
if (srcBpp == 24)
@@ -470,9 +470,9 @@ fb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel)
pOldTile->usage_hint);
if (!pNewTile)
return 0;
- fbGetDrawable(&pOldTile->drawable,
+ fbGetDrawable(pScreen, &pOldTile->drawable,
old, oldStride, oldBpp, oldXoff, oldYoff);
- fbGetDrawable(&pNewTile->drawable,
+ fbGetDrawable(pScreen, &pNewTile->drawable,
new, newStride, newBpp, newXoff, newYoff);
if (oldBpp == 24)
blt = fb24_32BltUp;
diff --git a/fb/fbarc.c b/fb/fbarc.c
index c1b7f7785..abcb8f5dc 100644
--- a/fb/fbarc.c
+++ b/fb/fbarc.c
@@ -71,7 +71,7 @@ fbPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc * parcs)
#endif
cclip = fbGetCompositeClip(pGC);
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (narcs--) {
if (miCanZeroArc(parcs)) {
box.x1 = parcs->x + pDrawable->x;
diff --git a/fb/fbbits.h b/fb/fbbits.h
index be32d8cf0..8dda43f0e 100644
--- a/fb/fbbits.h
+++ b/fb/fbbits.h
@@ -84,7 +84,7 @@ BRESSOLID(DrawablePtr pDrawable,
FbStride majorStep, minorStep;
BITS xor = (BITS) pPriv->xor;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
bits =
((UNIT *) (dst + ((y1 + dstYoff) * dstStride))) + (x1 + dstXoff) * MUL;
bitsStride = dstStride * (sizeof(FbBits) / sizeof(UNIT));
@@ -135,7 +135,7 @@ BRESDASH(DrawablePtr pDrawable,
Bool even;
Bool doOdd;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
doOdd = pGC->lineStyle == LineDoubleDash;
xorfg = (BITS) pPriv->xor;
xorbg = (BITS) pPriv->bgxor;
@@ -623,7 +623,7 @@ POLYLINE(DrawablePtr pDrawable,
if (mode == CoordModePrevious)
fbFixCoordModePrevious(npt, ptsOrig);
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
bitsStride = dstStride * (sizeof(FbBits) / sizeof(UNIT));
bitsBase =
((UNIT *) dst) + (yoff + dstYoff) * bitsStride + (xoff + dstXoff) * MUL;
@@ -744,7 +744,7 @@ POLYSEGMENT(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg)
int octant;
Bool capNotLast;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
bitsStride = dstStride * (sizeof(FbBits) / sizeof(UNIT));
bitsBase =
((UNIT *) dst) + (yoff + dstYoff) * bitsStride + (xoff + dstXoff) * MUL;
diff --git a/fb/fbcopy.c b/fb/fbcopy.c
index e9c252a5e..98a7a6325 100644
--- a/fb/fbcopy.c
+++ b/fb/fbcopy.c
@@ -74,9 +74,10 @@ fbCopyNtoN(DrawablePtr pSrcDrawable,
FbStride dstStride;
int dstBpp;
int dstXoff, dstYoff;
+ ScreenPtr pScreen = pGC ? pGC->pScreen : pSrcDrawable->pScreen;
- fbGetDrawable(pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
- fbGetDrawable(pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pScreen, pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pScreen, pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (nbox--) {
#ifndef FB_ACCESS_WRAPPER /* pixman_blt() doesn't support accessors yet */
@@ -129,8 +130,8 @@ fbCopy1toN(DrawablePtr pSrcDrawable,
int dstBpp;
int dstXoff, dstYoff;
- fbGetDrawable(pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
- fbGetDrawable(pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pGC->pScreen, pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (nbox--) {
if (dstBpp == 1) {
@@ -188,9 +189,9 @@ fbCopyNto1(DrawablePtr pSrcDrawable,
int dstBpp;
int dstXoff, dstYoff;
- fbGetDrawable(pSrcDrawable, src, srcStride, srcBpp, srcXoff,
+ fbGetDrawable(pGC->pScreen, pSrcDrawable, src, srcStride, srcBpp, srcXoff,
srcYoff);
- fbGetStipDrawable(pDstDrawable, dst, dstStride, dstBpp, dstXoff,
+ fbGetStipDrawable(pGC->pScreen, pDstDrawable, dst, dstStride, dstBpp, dstXoff,
dstYoff);
fbBltPlane(src + (pbox->y1 + dy + srcYoff) * srcStride, srcStride,
(pbox->x1 + dx + srcXoff) * srcBpp, srcBpp,
@@ -225,9 +226,9 @@ fbCopyNto1(DrawablePtr pSrcDrawable,
if (!tmp)
return;
- fbGetDrawable(pSrcDrawable, src, srcStride, srcBpp, srcXoff,
+ fbGetDrawable(pGC->pScreen, pSrcDrawable, src, srcStride, srcBpp, srcXoff,
srcYoff);
- fbGetDrawable(pDstDrawable, dst, dstStride, dstBpp, dstXoff,
+ fbGetDrawable(pGC->pScreen, pDstDrawable, dst, dstStride, dstBpp, dstXoff,
dstYoff);
fbBltPlane(src + (pbox->y1 + dy + srcYoff) * srcStride,
diff --git a/fb/fbfill.c b/fb/fbfill.c
index de9d6b313..4d172f7f2 100644
--- a/fb/fbfill.c
+++ b/fb/fbfill.c
@@ -35,7 +35,7 @@ fbFill(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int width, int height)
int dstXoff, dstYoff;
FbGCPrivPtr pPriv = fbGetGCPrivate(pGC);
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
switch (pGC->fillStyle) {
case FillSolid:
@@ -66,7 +66,7 @@ fbFill(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int width, int height)
alu = FbStipple1Rop(pGC->alu, pGC->fgPixel);
else
alu = FbOpaqueStipple1Rop(pGC->alu, pGC->fgPixel, pGC->bgPixel);
- fbGetDrawable(&pStip->drawable, stip, stipStride, stipBpp, stipXoff,
+ fbGetDrawable(pGC->pScreen, &pStip->drawable, stip, stipStride, stipBpp, stipXoff,
stipYoff);
fbTile(dst + (y + dstYoff) * dstStride, dstStride, x + dstXoff,
width, height, stip, stipStride, stipWidth, stipHeight, alu,
@@ -92,7 +92,7 @@ fbFill(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int width, int height)
bgxor = pPriv->bgxor;
}
- fbGetStipDrawable(&pStip->drawable, stip, stipStride, stipBpp,
+ fbGetStipDrawable(pGC->pScreen, &pStip->drawable, stip, stipStride, stipBpp,
stipXoff, stipYoff);
fbStipple(dst + (y + dstYoff) * dstStride, dstStride,
(x + dstXoff) * dstBpp, dstBpp, width * dstBpp, height,
@@ -113,7 +113,7 @@ fbFill(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int width, int height)
int tileHeight;
_X_UNUSED int tileXoff, tileYoff;
- fbGetDrawable(&pTile->drawable, tile, tileStride, tileBpp, tileXoff,
+ fbGetDrawable(pGC->pScreen, &pTile->drawable, tile, tileStride, tileBpp, tileXoff,
tileYoff);
tileWidth = pTile->drawable.width;
tileHeight = pTile->drawable.height;
@@ -151,7 +151,7 @@ fbSolidBoxClipped(DrawablePtr pDrawable,
int nbox;
int partX1, partX2, partY1, partY2;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
for (nbox = RegionNumRects(pClip), pbox = RegionRects(pClip);
nbox--; pbox++) {
diff --git a/fb/fbgc.c b/fb/fbgc.c
index e6f8279b3..9a0782341 100644
--- a/fb/fbgc.c
+++ b/fb/fbgc.c
@@ -91,7 +91,7 @@ fbPadPixmap(PixmapPtr pPixmap)
int bpp;
_X_UNUSED int xOff, yOff;
- fbGetDrawable(&pPixmap->drawable, bits, stride, bpp, xOff, yOff);
+ fbGetDrawable(pPixmap->drawable.pScreen, &pPixmap->drawable, bits, stride, bpp, xOff, yOff);
width = pPixmap->drawable.width * pPixmap->drawable.bitsPerPixel;
height = pPixmap->drawable.height;
@@ -169,7 +169,7 @@ fbCanEvenStipple(PixmapPtr pStipple, int bpp)
/* make sure the stipple width is a multiple of the even stipple width */
if (pStipple->drawable.width % len != 0)
return FALSE;
- fbGetDrawable(&pStipple->drawable, bits, stride, stip_bpp, stipXoff,
+ fbGetDrawable(pStipple->drawable.pScreen, &pStipple->drawable, bits, stride, stip_bpp, stipXoff,
stipYoff);
h = pStipple->drawable.height;
/* check to see that the stipple repeats horizontally */
diff --git a/fb/fbgetsp.c b/fb/fbgetsp.c
index 9a163b27e..aed44df6d 100644
--- a/fb/fbgetsp.c
+++ b/fb/fbgetsp.c
@@ -49,7 +49,7 @@ fbGetSpans(DrawablePtr pDrawable,
return;
}
- fbGetDrawable(pDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
while (nspans--) {
xoff = (int) (((long) pchardstStart) & (FB_MASK >> 3));
diff --git a/fb/fbglyph.c b/fb/fbglyph.c
index 3080a7728..54b8541af 100644
--- a/fb/fbglyph.c
+++ b/fb/fbglyph.c
@@ -286,7 +286,7 @@ fbPolyGlyphBlt(DrawablePtr pDrawable,
gy = y - pci->metrics.ascent;
if (glyph && gWidth <= sizeof(FbStip) * 8 &&
fbGlyphIn(fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight)) {
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff,
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff,
dstYoff);
(*glyph) (dst + (gy + dstYoff) * dstStride, dstStride, dstBpp,
(FbStip *) pglyph, pPriv->xor, gx + dstXoff, gHeight);
@@ -391,7 +391,7 @@ fbImageGlyphBlt(DrawablePtr pDrawable,
gy = y - pci->metrics.ascent;
if (glyph && gWidth <= sizeof(FbStip) * 8 &&
fbGlyphIn(fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight)) {
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff,
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff,
dstYoff);
(*glyph) (dst + (gy + dstYoff) * dstStride, dstStride, dstBpp,
(FbStip *) pglyph, pPriv->fg, gx + dstXoff, gHeight);
diff --git a/fb/fbimage.c b/fb/fbimage.c
index 59daa21bb..ebdc2d56f 100644
--- a/fb/fbimage.c
+++ b/fb/fbimage.c
@@ -101,7 +101,7 @@ fbPutZImage(DrawablePtr pDrawable,
BoxPtr pbox;
int x1, y1, x2, y2;
- fbGetStipDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetStipDrawable(pDrawable->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
for (nbox = RegionNumRects(pClip),
pbox = RegionRects(pClip); nbox--; pbox++) {
@@ -152,7 +152,7 @@ fbPutXYImage(DrawablePtr pDrawable,
int x1, y1, x2, y2;
FbBits fgand = 0, fgxor = 0, bgand = 0, bgxor = 0;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
if (dstBpp == 1) {
if (opaque)
@@ -239,7 +239,7 @@ fbGetImage(DrawablePtr pDrawable,
return;
}
- fbGetDrawable(pDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
x += pDrawable->x;
y += pDrawable->y;
diff --git a/fb/fbpict.c b/fb/fbpict.c
index 097a1a6bd..6220c66f6 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -151,7 +151,7 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
int bpp;
pixman_image_t *image;
- fbGetDrawablePixmap(pict->pDrawable, pixmap, *xoff, *yoff);
+ fbGetDrawablePixmap(pict->pDrawable->pScreen, pict->pDrawable, pixmap, *xoff, *yoff);
fbGetPixmapBitsData(pixmap, bits, stride, bpp);
image = pixman_image_create_bits((pixman_format_code_t) pict->format,
diff --git a/fb/fbpoint.c b/fb/fbpoint.c
index d5129d796..1a82f9ffc 100644
--- a/fb/fbpoint.c
+++ b/fb/fbpoint.c
@@ -120,7 +120,7 @@ fbPolyPoint(DrawablePtr pDrawable,
ppt->y += (ppt - 1)->y;
}
}
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
and = pPriv->and;
xor = pPriv->xor;
dots = fbDots;
diff --git a/fb/fbpush.c b/fb/fbpush.c
index f0a861cbe..c02a381cb 100644
--- a/fb/fbpush.c
+++ b/fb/fbpush.c
@@ -100,7 +100,7 @@ fbPushFill(DrawablePtr pDrawable,
int dstX;
int dstWidth;
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
dst = dst + (y + dstYoff) * dstStride;
dstX = (x + dstXoff) * dstBpp;
dstWidth = width * dstBpp;
@@ -181,7 +181,7 @@ fbPushPixels(GCPtr pGC,
int stipBpp;
_X_UNUSED int stipXoff, stipYoff;
- fbGetStipDrawable(&pBitmap->drawable, stip, stipStride, stipBpp, stipXoff,
+ fbGetStipDrawable(pGC->pScreen, &pBitmap->drawable, stip, stipStride, stipBpp, stipXoff,
stipYoff);
fbPushImage(pDrawable, pGC, stip, stipStride, 0, xOrg, yOrg, dx, dy);
diff --git a/fb/fbscreen.c b/fb/fbscreen.c
index ac4ff652a..e7b223e58 100644
--- a/fb/fbscreen.c
+++ b/fb/fbscreen.c
@@ -76,10 +76,14 @@ fbQueryBestSize(int class,
}
}
+#define __fbGetWindowPixmap(pWin) ((PixmapPtr)\
+ dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
+
PixmapPtr
_fbGetWindowPixmap(WindowPtr pWindow)
{
- return fbGetWindowPixmap(pWindow);
+
+ return __fbGetWindowPixmap(pWindow);
}
void
diff --git a/fb/fbseg.c b/fb/fbseg.c
index 1848387f6..cf8e3aae4 100644
--- a/fb/fbseg.c
+++ b/fb/fbseg.c
@@ -51,7 +51,7 @@ fbBresSolid(DrawablePtr pDrawable,
FbStip mask, mask0;
FbStip bits;
- fbGetStipDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetStipDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
dst += ((y1 + dstYoff) * dstStride);
x1 = (x1 + dstXoff) * dstBpp;
dst += x1 >> FB_STIP_SHIFT;
@@ -126,7 +126,7 @@ fbBresDash(DrawablePtr pDrawable,
Bool even;
Bool doOdd;
- fbGetStipDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetStipDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
doOdd = pGC->lineStyle == LineDoubleDash;
FbDashInit(pGC, pPriv, dashOffset, dashlen, even);
@@ -299,7 +299,7 @@ fbBresSolid24RRop(DrawablePtr pDrawable,
int rot;
FbStip andT, xorT;
- fbGetStipDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetStipDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
dst += ((y1 + dstYoff) * dstStride);
x1 = (x1 + dstXoff) * 24;
if (signdy < 0)
@@ -370,7 +370,7 @@ fbBresDash24RRop(DrawablePtr pDrawable,
Bool even;
Bool doOdd;
- fbGetStipDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetStipDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
doOdd = pGC->lineStyle == LineDoubleDash;
/* compute current dash position */
diff --git a/fb/fbsetsp.c b/fb/fbsetsp.c
index e09d2e3f3..766d18e08 100644
--- a/fb/fbsetsp.c
+++ b/fb/fbsetsp.c
@@ -46,7 +46,7 @@ fbSetSpans(DrawablePtr pDrawable,
fb24_32SetSpans(pDrawable, pGC, src, ppt, pwidth, nspans, fSorted);
return;
}
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (nspans--) {
d = dst + (ppt->y + dstYoff) * dstStride;
xoff = (int) (((long) src) & (FB_MASK >> 3));
diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 368c4b883..65e1c23b3 100644
--- a/fb/fbwindow.c
+++ b/fb/fbwindow.c
@@ -82,8 +82,8 @@ fbCopyWindowProc(DrawablePtr pSrcDrawable,
int dstBpp;
int dstXoff, dstYoff;
- fbGetDrawable(pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
- fbGetDrawable(pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pGC->pScreen, pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
+ fbGetDrawable(pGC->pScreen, pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (nbox--) {
fbBlt(src + (pbox->y1 + dy + srcYoff) * srcStride,
@@ -108,7 +108,7 @@ fbCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
RegionRec rgnDst;
int dx, dy;
- PixmapPtr pPixmap = fbGetWindowPixmap(pWin);
+ PixmapPtr pPixmap = GetDrawablePixmap(pWin->drawable.pScreen, &pWin->drawable);
DrawablePtr pDrawable = &pPixmap->drawable;
dx = ptOldOrg.x - pWin->drawable.x;
@@ -179,7 +179,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
try_mmx = 1;
#endif
- fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ fbGetDrawable(pDrawable->pScreen, pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
while (n--) {
#ifndef FB_ACCESS_WRAPPER