On Sat, 11 Jan 2014 12:35:19 +0100
"Roberto E. Vargas Caballero" <k...@shike2.com> wrote:
> > 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, but I
> > haven't noticed any side effects.
>
> I have noticed one. I get the large letters (g, j, y) cut in the
> botton part with with my font configuration ([0]).
>
> Regards,
>
> [0] "Liberation Mono:pixelsize=14:antialias=false:autohint=false"
I changed how height of region to update is being calculated, it should
work properly now.
Amadeusz
From c469a187cda295d037432782263729411409d740 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <am...@asmblr.net>
Date: Sat, 11 Jan 2014 12:52:15 +0100
Subject: [PATCH] Make w3mimgdisplay work with st
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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, but I haven't noticed any side
effects.
Signed-off-by: Amadeusz SÅawiÅski <am...@asmblr.net>
---
st.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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);
--
1.8.5.2