x11 backend: Ignore expose if frame is pending

When resizing rootston with the mouse, the result is really slow. One
can see that rootston needs quite a while for drawing the newly visible
area. This is because every single expose event is handled on its own
and causes (apparently) a full repaint or at least a swap.

This commit improves things by only causing a new frame if none is
pending already.

With this change, there is almost no delay in rootston drawing the newly
visible area.

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2018-04-15 10:43:25 +02:00
parent 52b058c2a3
commit e79d924588

View file

@ -74,7 +74,7 @@ static void handle_x11_event(struct wlr_x11_backend *x11,
xcb_expose_event_t *ev = (xcb_expose_event_t *)event; xcb_expose_event_t *ev = (xcb_expose_event_t *)event;
struct wlr_x11_output *output = struct wlr_x11_output *output =
x11_output_from_window_id(x11, ev->window); x11_output_from_window_id(x11, ev->window);
if (output != NULL) { if (output != NULL && !output->wlr_output.frame_pending) {
wlr_output_send_frame(&output->wlr_output); wlr_output_send_frame(&output->wlr_output);
} }
break; break;