mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-05 06:28:07 +02:00
patches to add Actualized flag, from daniels
This commit is contained in:
parent
1b4c37d8f9
commit
4db1e4a218
14 changed files with 111 additions and 2 deletions
|
|
@ -44,6 +44,9 @@ fbPolyArc (DrawablePtr pDrawable,
|
|||
xArc *parcs)
|
||||
{
|
||||
FbArc arc;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (pGC->lineWidth == 0)
|
||||
{
|
||||
|
|
|
|||
22
fb/fbcopy.c
22
fb/fbcopy.c
|
|
@ -51,7 +51,11 @@ fbCopyNtoN (DrawablePtr pSrcDrawable,
|
|||
FbStride dstStride;
|
||||
int dstBpp;
|
||||
int dstXoff, dstYoff;
|
||||
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
|
||||
fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
|
||||
|
|
@ -123,6 +127,10 @@ fbCopy1toN (DrawablePtr pSrcDrawable,
|
|||
int dstBpp;
|
||||
int dstXoff, dstYoff;
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
|
||||
fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
|
||||
|
|
@ -188,6 +196,10 @@ fbCopyNto1 (DrawablePtr pSrcDrawable,
|
|||
{
|
||||
FbGCPrivPtr pPriv = fbGetGCPrivate (pGC);
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
while (nbox--)
|
||||
{
|
||||
if (pDstDrawable->bitsPerPixel == 1)
|
||||
|
|
@ -307,6 +319,10 @@ fbCopyRegion (DrawablePtr pSrcDrawable,
|
|||
int nbox;
|
||||
BoxPtr pboxNew1, pboxNew2, pboxBase, pboxNext, pboxTmp;
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
pbox = REGION_RECTS(pDstRegion);
|
||||
nbox = REGION_NUM_RECTS(pDstRegion);
|
||||
|
||||
|
|
@ -436,6 +452,10 @@ fbDoCopy (DrawablePtr pSrcDrawable,
|
|||
Bool fastDst = FALSE; /* for fast clipping with one rect dest */
|
||||
Bool fastExpose = FALSE; /* for fast exposures with pixmap source */
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
/* Short cut for unmapped windows */
|
||||
|
||||
if (pDstDrawable->type == DRAWABLE_WINDOW &&
|
||||
|
|
|
|||
|
|
@ -39,7 +39,10 @@ fbFill (DrawablePtr pDrawable,
|
|||
int dstBpp;
|
||||
int dstXoff, dstYoff;
|
||||
FbGCPrivPtr pPriv = fbGetGCPrivate(pGC);
|
||||
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
|
||||
switch (pGC->fillStyle) {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ fbPolyFillRect(DrawablePtr pDrawable,
|
|||
int xorg, yorg;
|
||||
int n;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
xorg = pDrawable->x;
|
||||
yorg = pDrawable->y;
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ fbFillSpans (DrawablePtr pDrawable,
|
|||
int fullX1, fullX2, fullY1;
|
||||
int partX1, partX2;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
pextent = REGION_EXTENTS(pGC->pScreen, pClip);
|
||||
extentX1 = pextent->x1;
|
||||
extentY1 = pextent->y1;
|
||||
|
|
|
|||
|
|
@ -281,6 +281,9 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
|
|||
int dstBpp = 0;
|
||||
int dstXoff = 0, dstYoff = 0;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
glyph = 0;
|
||||
if (pGC->fillStyle == FillSolid && pPriv->and == 0)
|
||||
{
|
||||
|
|
@ -374,6 +377,9 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
|
|||
int dstBpp = 0;
|
||||
int dstXoff = 0, dstYoff = 0;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
glyph = 0;
|
||||
if (pPriv->and == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ fbPutImage (DrawablePtr pDrawable,
|
|||
FbStride srcStride;
|
||||
FbStip *src = (FbStip *) pImage;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
x += pDrawable->x;
|
||||
y += pDrawable->y;
|
||||
|
||||
|
|
|
|||
12
fb/fbline.c
12
fb/fbline.c
|
|
@ -37,6 +37,9 @@ fbZeroLine (DrawablePtr pDrawable,
|
|||
int x, y;
|
||||
int dashOffset;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
x = pDrawable->x;
|
||||
y = pDrawable->y;
|
||||
x1 = ppt->x;
|
||||
|
|
@ -71,6 +74,9 @@ fbZeroSegment (DrawablePtr pDrawable,
|
|||
int x, y;
|
||||
Bool drawLast = pGC->capStyle != CapNotLast;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
x = pDrawable->x;
|
||||
y = pDrawable->y;
|
||||
while (nseg--)
|
||||
|
|
@ -111,6 +117,9 @@ fbPolyLine (DrawablePtr pDrawable,
|
|||
{
|
||||
void (*line) (DrawablePtr, GCPtr, int mode, int npt, DDXPointPtr ppt);
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (pGC->lineWidth == 0)
|
||||
{
|
||||
line = fbZeroLine;
|
||||
|
|
@ -148,6 +157,9 @@ fbPolySegment (DrawablePtr pDrawable,
|
|||
{
|
||||
void (*seg) (DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pseg);
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (pGC->lineWidth == 0)
|
||||
{
|
||||
seg = fbZeroSegment;
|
||||
|
|
|
|||
|
|
@ -127,6 +127,9 @@ fbPolyPoint (DrawablePtr pDrawable,
|
|||
BoxPtr pBox;
|
||||
int nBox;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
/* make pointlist origin relative */
|
||||
ppt = pptInit;
|
||||
npt = nptInit;
|
||||
|
|
|
|||
12
fb/fbpush.c
12
fb/fbpush.c
|
|
@ -45,6 +45,9 @@ fbPushPattern (DrawablePtr pDrawable,
|
|||
int w;
|
||||
int lenspan;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
src += srcX >> FB_STIP_SHIFT;
|
||||
srcX &= FB_STIP_MASK;
|
||||
|
||||
|
|
@ -115,6 +118,9 @@ fbPushFill (DrawablePtr pDrawable,
|
|||
{
|
||||
FbGCPrivPtr pPriv = fbGetGCPrivate(pGC);
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (pGC->fillStyle == FillSolid)
|
||||
{
|
||||
FbBits *dst;
|
||||
|
|
@ -190,6 +196,9 @@ fbPushImage (DrawablePtr pDrawable,
|
|||
BoxPtr pbox;
|
||||
int x1, y1, x2, y2;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
for (nbox = REGION_NUM_RECTS (pClip),
|
||||
pbox = REGION_RECTS(pClip);
|
||||
nbox--;
|
||||
|
|
@ -237,6 +246,9 @@ fbPushPixels (GCPtr pGC,
|
|||
int stipBpp;
|
||||
int stipXoff, stipYoff; /* Assumed to be zero */
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetStipDrawable (&pBitmap->drawable, stip, stipStride, stipBpp, stipXoff, stipYoff);
|
||||
|
||||
fbPushImage (pDrawable, pGC,
|
||||
|
|
|
|||
30
fb/fbseg.c
30
fb/fbseg.c
|
|
@ -57,6 +57,9 @@ fbBresSolid (DrawablePtr pDrawable,
|
|||
FbStip mask, mask0;
|
||||
FbStip bits;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetStipDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
dst += ((y1 + dstYoff) * dstStride);
|
||||
x1 = (x1 + dstXoff) * dstBpp;
|
||||
|
|
@ -146,6 +149,9 @@ fbBresDash (DrawablePtr pDrawable,
|
|||
Bool even;
|
||||
Bool doOdd;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetStipDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
doOdd = pGC->lineStyle == LineDoubleDash;
|
||||
|
||||
|
|
@ -217,6 +223,9 @@ fbBresFill (DrawablePtr pDrawable,
|
|||
int e3,
|
||||
int len)
|
||||
{
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
while (len--)
|
||||
{
|
||||
fbFill (pDrawable, pGC, x1, y1, 1, 1);
|
||||
|
|
@ -248,6 +257,9 @@ fbSetFg (DrawablePtr pDrawable,
|
|||
GCPtr pGC,
|
||||
Pixel fg)
|
||||
{
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (fg != pGC->fgPixel)
|
||||
{
|
||||
DoChangeGC (pGC, GCForeground, (XID *) &fg, FALSE);
|
||||
|
|
@ -277,6 +289,9 @@ fbBresFillDash (DrawablePtr pDrawable,
|
|||
Bool doBg;
|
||||
Pixel fg, bg;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fg = pGC->fgPixel;
|
||||
bg = pGC->bgPixel;
|
||||
|
||||
|
|
@ -357,6 +372,9 @@ fbBresSolid24RRop (DrawablePtr pDrawable,
|
|||
int rot;
|
||||
FbStip andT, xorT;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetStipDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
dst += ((y1 + dstYoff) * dstStride);
|
||||
x1 = (x1 + dstXoff) * 24;
|
||||
|
|
@ -439,6 +457,9 @@ fbBresDash24RRop (DrawablePtr pDrawable,
|
|||
Bool even;
|
||||
Bool doOdd;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
fbGetStipDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
doOdd = pGC->lineStyle == LineDoubleDash;
|
||||
|
||||
|
|
@ -521,6 +542,9 @@ fbSelectBres (DrawablePtr pDrawable,
|
|||
int dstBpp = pDrawable->bitsPerPixel;
|
||||
FbBres * bres;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
if (pGC->lineStyle == LineSolid)
|
||||
{
|
||||
bres = fbBresFill;
|
||||
|
|
@ -589,6 +613,9 @@ fbBres (DrawablePtr pDrawable,
|
|||
int e3,
|
||||
int len)
|
||||
{
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
(*fbSelectBres (pDrawable, pGC)) (pDrawable, pGC, dashOffset,
|
||||
signdx, signdy, axis, x1, y1,
|
||||
e, e1, e3, len);
|
||||
|
|
@ -622,6 +649,9 @@ fbSegment (DrawablePtr pDrawable,
|
|||
unsigned int oc1; /* outcode of point 1 */
|
||||
unsigned int oc2; /* outcode of point 2 */
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
nBox = REGION_NUM_RECTS (pClip);
|
||||
pBox = REGION_RECTS (pClip);
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,9 @@ fbSetSpans (DrawablePtr pDrawable,
|
|||
int xoff;
|
||||
int x1, x2;
|
||||
|
||||
if (pDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDrawable))
|
||||
return;
|
||||
|
||||
#ifdef FB_24_32BIT
|
||||
if (pDrawable->bitsPerPixel != BitsPerPixel(pDrawable->depth))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
Bool
|
||||
fbCreateWindow(WindowPtr pWin)
|
||||
{
|
||||
pWin->optional->actualised = 1;
|
||||
#ifndef FB_NO_WINDOW_PIXMAPS
|
||||
pWin->devPrivates[fbWinPrivateIndex].ptr =
|
||||
(pointer) fbGetScreenPixmap(pWin->drawable.pScreen);
|
||||
|
|
@ -88,6 +89,10 @@ fbCopyWindowProc (DrawablePtr pSrcDrawable,
|
|||
int dstBpp;
|
||||
int dstXoff, dstYoff;
|
||||
|
||||
if ((pSrcDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pSrcDrawable)) ||
|
||||
(pDstDrawable->type == DRAWABLE_WINDOW && !wActualised((WindowPtr)pDstDrawable)))
|
||||
return;
|
||||
|
||||
fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
|
||||
fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
|
||||
|
|
@ -286,6 +291,7 @@ fbFillRegionTiled (DrawablePtr pDrawable,
|
|||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
|
||||
fbGetDrawable (&pTile->drawable, tile, tileStride, tileBpp, tileXoff, tileYoff);
|
||||
tileWidth = pTile->drawable.width;
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ typedef struct _WindowOpt {
|
|||
struct _OtherClients *otherClients; /* default: NULL */
|
||||
struct _GrabRec *passiveGrabs; /* default: NULL */
|
||||
PropertyPtr userProps; /* default: NULL */
|
||||
unsigned int actualised; /* default: 0 */
|
||||
unsigned long backingBitPlanes; /* default: ~0L */
|
||||
unsigned long backingPixel; /* default: 0 */
|
||||
#ifdef SHAPE
|
||||
|
|
@ -201,6 +202,7 @@ extern Mask DontPropagateMasks[];
|
|||
#endif
|
||||
#define wClient(w) (clients[CLIENT_ID((w)->drawable.id)])
|
||||
#define wBorderWidth(w) ((int) (w)->borderWidth)
|
||||
#define wActualised(w) wUseDefault(w, actualised, 0)
|
||||
|
||||
/* true when w needs a border drawn. */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue