From e79d924588523732d13b582a46962246c8a9670d Mon Sep 17 00:00:00 2001
From: Uli Schlachter <psychon@znc.in>
Date: Sun, 15 Apr 2018 10:43:25 +0200
Subject: 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>
---
 backend/x11/backend.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'backend/x11')

diff --git a/backend/x11/backend.c b/backend/x11/backend.c
index 768d00f7..089b3822 100644
--- a/backend/x11/backend.c
+++ b/backend/x11/backend.c
@@ -74,7 +74,7 @@ static void handle_x11_event(struct wlr_x11_backend *x11,
 		xcb_expose_event_t *ev = (xcb_expose_event_t *)event;
 		struct wlr_x11_output *output =
 			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);
 		}
 		break;
-- 
cgit v1.2.3