From: Quentin Glidic <sardemff7+...@sardemff7.net>

Even if the surface size is already correct, we need to store the
configured size in case some other state change triggers a configure
event.

Signed-off-by: Quentin Glidic <sardemff7+...@sardemff7.net>
---
 libweston-desktop/wl-shell.c     | 4 ++--
 libweston-desktop/xdg-shell-v5.c | 8 +++++---
 libweston-desktop/xdg-shell-v6.c | 8 +++++---
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/libweston-desktop/wl-shell.c b/libweston-desktop/wl-shell.c
index 74ce473..ded69f7 100644
--- a/libweston-desktop/wl-shell.c
+++ b/libweston-desktop/wl-shell.c
@@ -67,8 +67,8 @@ weston_desktop_wl_shell_surface_set_size(struct 
weston_desktop_surface *dsurface
        struct weston_surface *wsurface =
                weston_desktop_surface_get_surface(surface->surface);
 
-       if (wsurface->width == width && wsurface->height == height)
-               return;
+       if ((wsurface->width == width && wsurface->height == height) ||
+           (width == 0 && height == 0))
 
        wl_shell_surface_send_configure(surface->resource,
                                        WL_SHELL_SURFACE_RESIZE_NONE,
diff --git a/libweston-desktop/xdg-shell-v5.c b/libweston-desktop/xdg-shell-v5.c
index 83e5d30..14216b0 100644
--- a/libweston-desktop/xdg-shell-v5.c
+++ b/libweston-desktop/xdg-shell-v5.c
@@ -192,11 +192,13 @@ weston_desktop_xdg_surface_set_size(struct 
weston_desktop_surface *dsurface,
        struct weston_desktop_xdg_surface *surface = user_data;
        struct weston_surface *wsurface = 
weston_desktop_surface_get_surface(surface->surface);
 
-       if (wsurface->width == width && wsurface->height == height)
-               return;
-
        surface->requested_size.width = width;
        surface->requested_size.height = height;
+
+       if ((wsurface->width == width && wsurface->height == height) ||
+           (width == 0 && height == 0))
+               return;
+
        weston_desktop_xdg_surface_schedule_configure(surface);
 }
 
diff --git a/libweston-desktop/xdg-shell-v6.c b/libweston-desktop/xdg-shell-v6.c
index d4d0112..2afce81 100644
--- a/libweston-desktop/xdg-shell-v6.c
+++ b/libweston-desktop/xdg-shell-v6.c
@@ -607,11 +607,13 @@ weston_desktop_xdg_toplevel_set_size(struct 
weston_desktop_surface *dsurface,
        struct weston_surface *wsurface =
                
weston_desktop_surface_get_surface(toplevel->base.desktop_surface);
 
-       if (wsurface->width == width && wsurface->height == height)
-               return;
-
        toplevel->requested_size.width = width;
        toplevel->requested_size.height = height;
+
+       if ((wsurface->width == width && wsurface->height == height) ||
+           (width == 0 && height == 0))
+               return;
+
        weston_desktop_xdg_surface_schedule_configure(&toplevel->base);
 }
 
-- 
2.10.0

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to