x: only re-render the tree in handle_normal_hints when they actually changed

This commit is contained in:
Michael Stapelberg 2011-05-29 11:46:01 +02:00
parent b49874dcb8
commit f680c8841f
1 changed files with 15 additions and 5 deletions

View File

@ -739,6 +739,7 @@ static int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state
con->base_height = base_height; con->base_height = base_height;
DLOG("client's base_height changed to %d\n", base_height); DLOG("client's base_height changed to %d\n", base_height);
DLOG("client's base_width changed to %d\n", base_width); 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 */ /* 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 */ /* Check if we need to set proportional_* variables using the correct ratio */
if ((width / height) < min_aspect) { if ((width / height) < min_aspect) {
con->proportional_width = width; if (con->proportional_width != width ||
con->proportional_height = width / min_aspect; con->proportional_height != (width / min_aspect)) {
con->proportional_width = width;
con->proportional_height = width / min_aspect;
changed = true;
}
} else if ((width / height) > max_aspect) { } else if ((width / height) > max_aspect) {
con->proportional_width = width; if (con->proportional_width != width ||
con->proportional_height = width / max_aspect; con->proportional_height != (width / max_aspect)) {
con->proportional_width = width;
con->proportional_height = width / max_aspect;
changed = true;
}
} else goto render_and_return; } else goto render_and_return;
render_and_return: render_and_return:
tree_render(); if (changed)
tree_render();
return 1; return 1;
} }