From c1d0729d9a7bb3d4314e400f7131746ebd646de9 Mon Sep 17 00:00:00 2001 From: Connor E <38229097+c-edw@users.noreply.github.com> Date: Fri, 1 Feb 2019 10:59:47 +0000 Subject: [PATCH] Make popup inert when destroyed. --- types/xdg_shell/wlr_xdg_popup.c | 3 ++- types/xdg_shell/wlr_xdg_surface.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/types/xdg_shell/wlr_xdg_popup.c b/types/xdg_shell/wlr_xdg_popup.c index 598c14ef..b27a629e 100644 --- a/types/xdg_shell/wlr_xdg_popup.c +++ b/types/xdg_shell/wlr_xdg_popup.c @@ -285,7 +285,8 @@ void destroy_xdg_popup(struct wlr_xdg_surface *xdg_surface) { if (xdg_surface == NULL) { return; } - assert(xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP); + assert(xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP || + xdg_surface->role == WLR_XDG_SURFACE_ROLE_NONE); reset_xdg_surface(xdg_surface); } diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c index 0e98155a..db3fc29a 100644 --- a/types/xdg_shell/wlr_xdg_surface.c +++ b/types/xdg_shell/wlr_xdg_surface.c @@ -524,9 +524,14 @@ void wlr_xdg_toplevel_send_close(struct wlr_xdg_surface *surface) { } void wlr_xdg_popup_destroy(struct wlr_xdg_surface *surface) { + if (surface == NULL) { + return; + } assert(surface->popup); assert(surface->role == WLR_XDG_SURFACE_ROLE_POPUP); xdg_popup_send_popup_done(surface->popup->resource); + wl_resource_set_user_data(surface->popup->resource, NULL); + destroy_xdg_popup(surface); } static void xdg_popup_get_position(struct wlr_xdg_popup *popup,