Commit c0a56ef

Amadeusz Sławiński <amade@asmblr.net>
2014-01-11 06:54:36
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 <amade@asmblr.net>
1 parent 9df9a47
Changed files (1)
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);