From f680c8841f88da435ca0a48329b4a22aba0853d2 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 29 May 2011 11:46:01 +0200 Subject: [PATCH] x: only re-render the tree in handle_normal_hints when they actually changed --- src/handlers.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/handlers.c b/src/handlers.c index b87bb418..aceb5b70 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -739,6 +739,7 @@ static int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state con->base_height = base_height; DLOG("client's base_height changed to %d\n", base_height); DLOG("client's base_width changed to %d\n", base_width); + changed = true; } /* If no aspect ratio was set or if it was invalid, we ignore the hints */ @@ -764,15 +765,24 @@ static int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state /* Check if we need to set proportional_* variables using the correct ratio */ if ((width / height) < min_aspect) { - con->proportional_width = width; - con->proportional_height = width / min_aspect; + if (con->proportional_width != width || + con->proportional_height != (width / min_aspect)) { + con->proportional_width = width; + con->proportional_height = width / min_aspect; + changed = true; + } } else if ((width / height) > max_aspect) { - con->proportional_width = width; - con->proportional_height = width / max_aspect; + if (con->proportional_width != width || + con->proportional_height != (width / max_aspect)) { + con->proportional_width = width; + con->proportional_height = width / max_aspect; + changed = true; + } } else goto render_and_return; render_and_return: - tree_render(); + if (changed) + tree_render(); return 1; } -- 2.39.5