exa: create ExaCheckGetImage
This commit is contained in:
parent
258fc4b106
commit
f06bde3d4b
|
@ -1201,12 +1201,7 @@ exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||||
}
|
}
|
||||||
|
|
||||||
fallback:
|
fallback:
|
||||||
EXA_FALLBACK(("from %p (%c)\n", pDrawable,
|
ExaCheckGetImage(pDrawable, x, y, w, h, format, planeMask, d);
|
||||||
exaDrawableLocation(pDrawable)));
|
|
||||||
|
|
||||||
exaPrepareAccessReg (pDrawable, EXA_PREPARE_SRC, &Reg);
|
|
||||||
fbGetImage (pDrawable, x, y, w, h, format, planeMask, d);
|
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
REGION_UNINIT(pScreen, &Reg);
|
REGION_UNINIT(pScreen, &Reg);
|
||||||
|
|
|
@ -360,6 +360,10 @@ ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
|
||||||
DrawablePtr pDrawable,
|
DrawablePtr pDrawable,
|
||||||
int w, int h, int x, int y);
|
int w, int h, int x, int y);
|
||||||
|
|
||||||
|
void
|
||||||
|
ExaCheckGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||||
|
unsigned int format, unsigned long planeMask, char *d);
|
||||||
|
|
||||||
void
|
void
|
||||||
ExaCheckGetSpans (DrawablePtr pDrawable,
|
ExaCheckGetSpans (DrawablePtr pDrawable,
|
||||||
int wMax,
|
int wMax,
|
||||||
|
|
|
@ -282,6 +282,36 @@ ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
|
||||||
EXA_GC_EPILOGUE(pGC);
|
EXA_GC_EPILOGUE(pGC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ExaCheckGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||||
|
unsigned int format, unsigned long planeMask, char *d)
|
||||||
|
{
|
||||||
|
BoxRec Box;
|
||||||
|
RegionRec Reg;
|
||||||
|
int xoff, yoff;
|
||||||
|
ScreenPtr pScreen = pDrawable->pScreen;
|
||||||
|
PixmapPtr pPix = exaGetDrawablePixmap (pDrawable);
|
||||||
|
ExaScreenPriv(pScreen);
|
||||||
|
|
||||||
|
EXA_FALLBACK(("from %p (%c)\n", pDrawable,
|
||||||
|
exaDrawableLocation(pDrawable)));
|
||||||
|
|
||||||
|
exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
|
||||||
|
|
||||||
|
Box.x1 = pDrawable->y + x + xoff;
|
||||||
|
Box.y1 = pDrawable->y + y + yoff;
|
||||||
|
Box.x2 = Box.x1 + w;
|
||||||
|
Box.y2 = Box.y1 + h;
|
||||||
|
|
||||||
|
REGION_INIT(pScreen, &Reg, &Box, 1);
|
||||||
|
|
||||||
|
exaPrepareAccessReg (pDrawable, EXA_PREPARE_SRC, &Reg);
|
||||||
|
swap(pExaScr, pScreen, GetImage);
|
||||||
|
pScreen->GetImage (pDrawable, x, y, w, h, format, planeMask, d);
|
||||||
|
swap(pExaScr, pScreen, GetImage);
|
||||||
|
exaFinishAccess (pDrawable, EXA_PREPARE_SRC);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExaCheckGetSpans (DrawablePtr pDrawable,
|
ExaCheckGetSpans (DrawablePtr pDrawable,
|
||||||
int wMax,
|
int wMax,
|
||||||
|
|
Loading…
Reference in New Issue