]> Sergey Matveev's repositories - st.git/commitdiff
Make w3mimgdisplay work with st
authorAmadeusz Sławiński <amade@asmblr.net>
Sat, 11 Jan 2014 11:54:36 +0000 (12:54 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Thu, 16 Jan 2014 09:20:20 +0000 (10:20 +0100)
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>
st.c

diff --git a/st.c b/st.c
index 4d543d19627f0e6dfb15b510ca4e8b46360987ee..48c81a26e04bc6b167515c3793667a76ba210bdc 100644 (file)
--- 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);