aboutsummaryrefslogtreecommitdiff
path: root/src/libdraw
diff options
context:
space:
mode:
Diffstat (limited to 'src/libdraw')
-rw-r--r--src/libdraw/x11-draw.c13
-rw-r--r--src/libdraw/x11-get.c3
2 files changed, 10 insertions, 6 deletions
diff --git a/src/libdraw/x11-draw.c b/src/libdraw/x11-draw.c
index 33b92c87..ee91791d 100644
--- a/src/libdraw/x11-draw.c
+++ b/src/libdraw/x11-draw.c
@@ -17,14 +17,12 @@ void
memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp,
Memimage *mask, Point mp, int op)
{
+ int drew;
Memdrawparam *par;
if((par = _memimagedrawsetup(dst, r, src, sp, mask, mp, op)) == nil)
return;
- if(xdraw(par))
- return;
-
/* only fetch dst data if we need it */
if((par->state&(Simplemask|Fullmask)) != (Simplemask|Fullmask))
xgetxdata(dst, par->r);
@@ -36,6 +34,9 @@ memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp,
/* now can run memimagedraw on the in-memory bits */
_memimagedraw(par);
+ if(xdraw(par))
+ return;
+
/* put bits back on x server */
xputxdata(dst, par->r);
}
@@ -67,7 +68,7 @@ xdraw(Memdrawparam *par)
m = Simplesrc|Simplemask|Fullmask;
if((state&m) == m){
xfillcolor(dst, r, par->sdval);
- xdirtyxdata(dst, r);
+ // xdirtyxdata(dst, r);
return 1;
}
@@ -86,7 +87,7 @@ xdraw(Memdrawparam *par)
XCopyArea(_x.display, xsrc->pixmap, xdst->pixmap, gc,
sp.x, sp.y, Dx(r), Dy(r), dp.x, dp.y);
- xdirtyxdata(dst, r);
+ // xdirtyxdata(dst, r);
return 1;
}
@@ -131,7 +132,7 @@ xdraw(Memdrawparam *par)
XSetTSOrigin(_x.display, gc, mp.x, mp.y);
XFillRectangle(_x.display, xdst->pixmap, gc, dp.x, dp.y,
Dx(r), Dy(r));
- xdirtyxdata(dst, r);
+ // xdirtyxdata(dst, r);
return 1;
}
diff --git a/src/libdraw/x11-get.c b/src/libdraw/x11-get.c
index feed46c6..a6d4b12e 100644
--- a/src/libdraw/x11-get.c
+++ b/src/libdraw/x11-get.c
@@ -30,6 +30,8 @@ xgetxdata(Memimage *m, Rectangle r)
if(xm->dirty == 0)
return xm->xi;
+ abort(); /* should never call this now */
+
r = xm->dirtyr;
if(Dx(r)==0 || Dy(r)==0)
return xm->xi;
@@ -102,6 +104,7 @@ xdirtyxdata(Memimage *m, Rectangle r)
xm = m->X;
if(xm == nil)
return;
+
xm->dirty = 1;
addrect(&xm->dirtyr, r);
}