From 3f53d9179bcdb11d053527336ac4a49f274bc8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis-Francis=20Ratt=C3=A9-Boulianne?= Date: Mon, 13 Nov 2017 16:20:52 -0500 Subject: [PATCH] xwm: Only send configure a window if the new size is different MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we configure a window with the same size and wait for the sync alarm to go off, the resizing is gonna block. The event is only handled is the size actually changed. Signed-off-by: Louis-Francis Ratté-Boulianne Reviewed-by: Daniel Stone --- xwayland/window-manager.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c index c4ca0c60..f31e3c73 100644 --- a/xwayland/window-manager.c +++ b/xwayland/window-manager.c @@ -2569,6 +2569,7 @@ send_configure(struct weston_surface *surface, int32_t width, int32_t height) struct weston_wm_window *window = get_wm_window(surface); struct weston_wm *wm = window->wm; struct theme *t = window->wm->theme; + int new_width, new_height; int vborder, hborder; if (window->decorate && !window->fullscreen) { @@ -2580,14 +2581,20 @@ send_configure(struct weston_surface *surface, int32_t width, int32_t height) } if (width > hborder) - window->width = width - hborder; + new_width = width - hborder; else - window->width = 1; + new_width = 1; if (height > vborder) - window->height = height - vborder; + new_height = height - vborder; else - window->height = 1; + new_height = 1; + + if (window->width == new_width && window->height == new_height) + return; + + window->width = new_width; + window->height = new_height; if (window->frame) frame_resize_inside(window->frame, window->width, window->height);