From: Amadeusz Sławiński Date: Sat, 11 Jan 2014 11:54:36 +0000 (+0100) Subject: Make w3mimgdisplay work with st X-Git-Url: https://git.danieliu.xyz/?a=commitdiff_plain;h=c0a56ef4be2a0f84360f41b2d45964e7ef297746;p=st.git 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 --- diff --git a/st.c b/st.c index 4d543d1..48c81a2 100644 --- a/st.c +++ b/st.c @@ -3301,6 +3301,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { 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);