commit c0a56ef4be2a0f84360f41b2d45964e7ef297746 from: Amadeusz Sławiński via: Roberto E. Vargas Caballero date: Thu Jan 16 09:20:20 2014 UTC Make w3mimgdisplay work with st Before this patch draw() calls drawregion which calls xdraws and then updates whole window in one call thus overdrawing anything drawn by w3mimgdisplay. After moving XCopyArea to xdraws it only updates the regions which are being updated by XftDraw* functions. It may do a few more calls to XCopyArea with this patch. Signed-off-by: Amadeusz Sławiński commit - 9df9a4723dedf4f5e12c954376c4931a6976b918 commit + c0a56ef4be2a0f84360f41b2d45964e7ef297746 blob - 4d543d19627f0e6dfb15b510ca4e8b46360987ee blob + 48c81a26e04bc6b167515c3793667a76ba210bdc --- st.c +++ st.c @@ -3301,6 +3301,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, XftDrawRect(xw.draw, fg, winx, winy + font->ascent + 1, width, 1); } + XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, winx, winy, width, + font->ascent + font->descent, winx, winy); /* Reset clip to none. */ XftDrawSetClip(xw.draw, 0); @@ -3399,8 +3401,6 @@ redraw(int timeout) { void draw(void) { drawregion(0, 0, term.col, term.row); - XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, - xw.h, 0, 0); XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE)? defaultfg : defaultbg].pixel);