[weston 4/8] xwm: Only send configure a window if the new size is different

Louis-Francis Ratté-Boulianne lfrb at collabora.com
Tue Apr 11 20:53:00 UTC 2017


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 <lfrb at collabora.com>
---
 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 b78175b3..8048594e 100644
--- a/xwayland/window-manager.c
+++ b/xwayland/window-manager.c
@@ -2778,6 +2778,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) {
@@ -2789,14 +2790,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);
-- 
2.12.2



More information about the wayland-devel mailing list