[PATCH weston 2/2] libweston-desktop/xdg_shell_v6: Raise errors on not-yet-possible requests
Quentin Glidic
sardemff7+wayland at sardemff7.net
Sun Sep 11 09:36:30 UTC 2016
From: Quentin Glidic <sardemff7+git at sardemff7.net>
These requests need a mapped surface, which can only happen after the
initial configure event.
Signed-off-by: Quentin Glidic <sardemff7+git at sardemff7.net>
---
I consider this one a fix, because clients doing that are broken, though currently
we do not inform them of that.
libweston-desktop/xdg-shell-v6.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/libweston-desktop/xdg-shell-v6.c b/libweston-desktop/xdg-shell-v6.c
index fbf3e69..177d1e5 100644
--- a/libweston-desktop/xdg-shell-v6.c
+++ b/libweston-desktop/xdg-shell-v6.c
@@ -349,6 +349,13 @@ weston_desktop_xdg_toplevel_protocol_show_window_menu(struct wl_client *wl_clien
struct weston_desktop_xdg_toplevel *toplevel =
weston_desktop_surface_get_implementation_data(dsurface);
+ if (!toplevel->configured) {
+ wl_resource_post_error(toplevel->resource,
+ ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+ "Surface has not been configured yet");
+ return;
+ }
+
weston_desktop_api_show_window_menu(toplevel->base.desktop,
dsurface, seat, x, y);
}
@@ -366,6 +373,13 @@ weston_desktop_xdg_toplevel_protocol_move(struct wl_client *wl_client,
struct weston_desktop_xdg_toplevel *toplevel =
weston_desktop_surface_get_implementation_data(dsurface);
+ if (!toplevel->configured) {
+ wl_resource_post_error(toplevel->resource,
+ ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+ "Surface has not been configured yet");
+ return;
+ }
+
weston_desktop_api_move(toplevel->base.desktop, dsurface, seat, serial);
}
@@ -383,6 +397,13 @@ weston_desktop_xdg_toplevel_protocol_resize(struct wl_client *wl_client,
struct weston_desktop_xdg_toplevel *toplevel =
weston_desktop_surface_get_implementation_data(dsurface);
+ if (!toplevel->configured) {
+ wl_resource_post_error(toplevel->resource,
+ ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
+ "Surface has not been configured yet");
+ return;
+ }
+
weston_desktop_api_resize(toplevel->base.desktop,
dsurface, seat, serial, edges);
}
--
2.10.0
More information about the wayland-devel
mailing list