Re: [dev] [st] [PATCH] Remove expose() to prevent unresponsiveness

From: Laslo Hunhold <>
Date: Fri, 23 Jun 2017 20:24:54 +0200

On Thu, 22 Jun 2017 19:36:03 -0400
"S. Gilles" <> wrote:

Hey S.,

> The first thing I tried was to delete expose() from x.c, which has
> been working perfectly for the past hour or so: st is responsive
> and I haven't seen any visual issues.
> Since it seems to work for my specific setup, I'm proposing this
> patch, but I'm sort of expecting/hoping that somebody who knows
> more than I do (so anything at all) about X11/xcb will explain why
> handling Expose events is actually needed. In that case, I'll try
> something more complicated to limit an Expose cascade to a single
> expose().

well, generally it is no problem to just remove expose, as the x.c
set of functions is framerate-based. So even if we do not redraw the
window on expose it will be done 17ms later (if you set it to 60fps),
not noticeable for the eye.

If you want to "mark" the window as dirty, do so. Just call

        tsetdirt(0, term.row - 1);

and it will be redrawn on the next sheduled frame (if I understand st
correctly). The reason why st freezes has been identified by you
correctly. It is because we call redraw() without "respecting" the

With best regards

Laslo Hunhold

Laslo Hunhold <>
Received on Fri Jun 23 2017 - 20:24:54 CEST

This archive was generated by hypermail 2.3.0 : Fri Jun 23 2017 - 20:36:13 CEST