[PATCH weston v3] desktop-shell: Fail if get_xdg_surface is called on an xdg_surface
Bryce Harrington
bryce at osg.samsung.com
Fri Feb 6 17:51:32 PST 2015
On Fri, Feb 06, 2015 at 10:15:28AM +0800, Jonas Ådahl wrote:
> If a client calls xdg_shell.get_xdg_surface on a surface that is already
> an xdg_surface would, prior to this patch, succeed, but cause weston to
> crash later when trying to configure. This patch instead sends a role
> error to the client complaining that it already is an xdg_surface.
>
> Note that .._set_role() only fails when changing roles, not when setting
> the same role twice.
>
> The same is done for xdg_popup.
>
> Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
> Reviewed-by: Daniel Stone <daniels at collabora.com>
> Reviewed-by: Bryce Harrington <bryce at osg.samsung.com>
> ---
>
> Changed since v2:
>
> Fixed typo in commit message.
>
Thanks, applied:
f10e06c..bf48e21 master -> master
>
> desktop-shell/shell.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index a7514f7..d4407d0 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -3959,6 +3959,14 @@ xdg_get_xdg_surface(struct wl_client *client,
> struct desktop_shell *shell = sc->shell;
> struct shell_surface *shsurf;
>
> + shsurf = get_shell_surface(surface);
> + if (shsurf && shell_surface_is_xdg_surface(shsurf)) {
> + wl_resource_post_error(resource, XDG_SHELL_ERROR_ROLE,
> + "This wl_surface is already an "
> + "xdg_surface");
> + return;
> + }
> +
> if (weston_surface_set_role(surface, "xdg_surface",
> resource, XDG_SHELL_ERROR_ROLE) < 0)
> return;
> @@ -4052,6 +4060,14 @@ xdg_get_xdg_popup(struct wl_client *client,
> struct weston_surface *parent;
> struct shell_seat *seat;
>
> + shsurf = get_shell_surface(surface);
> + if (shsurf && shell_surface_is_xdg_popup(shsurf)) {
> + wl_resource_post_error(resource, XDG_SHELL_ERROR_ROLE,
> + "This wl_surface is already an "
> + "xdg_popup");
> + return;
> + }
> +
> if (weston_surface_set_role(surface, "xdg_popup",
> resource, XDG_SHELL_ERROR_ROLE) < 0)
> return;
> --
> 2.1.0
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list