From 6c5595fa9cf44df8ce6f3fac32bcccf8a50ac6d0 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 27 Jul 2014 18:30:33 +0200 Subject: [PATCH] window-wayland: Don't insist if the window gives us a bad buffer This is an easy way to get into an infinite loop where we're constantly re-sending stuff to the window. If it worked once, it probably won't work again. --- src/wayland/window-wayland.c | 38 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/wayland/window-wayland.c b/src/wayland/window-wayland.c index fd807c0ad..f52b4c1f3 100644 --- a/src/wayland/window-wayland.c +++ b/src/wayland/window-wayland.c @@ -203,26 +203,28 @@ meta_window_wayland_move_resize_internal (MetaWindow *window, * new position the client wants. */ can_move_now = TRUE; } - - if (constrained_rect.width != window->rect.width || - constrained_rect.height != window->rect.height) - { - wl_window->last_sent_width = constrained_rect.width; - wl_window->last_sent_height = constrained_rect.height; - - meta_wayland_surface_configure_notify (window->surface, - constrained_rect.width, - constrained_rect.height, - &wl_window->pending_configure_serial); - - /* We need to wait until the resize completes before we can move */ - can_move_now = FALSE; - } else { - /* We're just moving the window, so we don't need to wait for a configure - * and then ack to simply move the window. */ - can_move_now = TRUE; + if (constrained_rect.width != window->rect.width || + constrained_rect.height != window->rect.height) + { + wl_window->last_sent_width = constrained_rect.width; + wl_window->last_sent_height = constrained_rect.height; + + meta_wayland_surface_configure_notify (window->surface, + constrained_rect.width, + constrained_rect.height, + &wl_window->pending_configure_serial); + + /* We need to wait until the resize completes before we can move */ + can_move_now = FALSE; + } + else + { + /* We're just moving the window, so we don't need to wait for a configure + * and then ack to simply move the window. */ + can_move_now = TRUE; + } } if (can_move_now)