xwm: Only send configure a window if the new size is different
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@collabora.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
ef82bdfdd7
commit
3f53d9179b
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue