Re: [dev] st: improved double-buffering with Xdbe

From: Hadrian Węgrzynowski <>
Date: Mon, 23 Apr 2012 11:46:13 +0200

On Fri, 20 Apr 2012 10:39:11 +0200
Brandon Invergo <> wrote:

>As some background, I've been using st on an Arm device (Genesi Efika
>MX) which has relatively low specs compared to your average x86/amd64
>computer. st should be ideal because of how small it is compared to
>xterm or rxvt but the reality is that its rendering is quite a bit
>slower. Under heavy processor load, such as building a package, I can
>literally watch the terminal window refreshing (ie I can see a line
>traveling down the window, above which the window is refreshed and
>below which the window is dirty...."tearing").
>I've changed the code to use the X Double Buffer Extension (Xdbe).
>Instead of rendering to a Pixbuf and then copying that Pixbuf to the
>window, which is a relatively slow operation, it now renders to an
>XdbeBackBuffer and then simply swaps buffers with the window. The
>result is tear-free and apparently faster rendering even on an 800mhz
>Arm cpu.
>A side effect is that the code is a bit shorter as a result too. For
>example, xresize() does almost nothing now, since the XdbeBackBuffer is
>automatically resized with the window (see the DBE manpage), so several
>Xlib calls can be removed from that function.
>The provided diff is against the default branch, however I also got it
>working for the xft branch. I can provide a diff for that too if you
>want but the only extra difference is that any Xft draw-related calls
>should work on xw.buf rather than (including the one in
>LIBS in should have -lXext appended. I forgot to include that
>in the patch.
>A few caveats: 1) my C skills are a bit rusty, 2) I'm unfamiliar with
>Mercurial, 3) I'm completely new to Xlib. So, while it Works For Me
>(tm), you might want to test it a bit and let me know if I messed up
>I'm going to keep hacking on it to try to improve further the speed if
>I can.
>Brandon Invergo

Thanks for your work. I'll try st with your patch later this week.
With regards,
Hadrian Węgrzynowski.
Received on Mon Apr 23 2012 - 11:46:13 CEST

This archive was generated by hypermail 2.3.0 : Mon Apr 23 2012 - 11:48:04 CEST