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