From e7fff4f5607878a016c1514a3c75ec1e2d7c41ce Mon Sep 17 00:00:00 2001 From: Connor E <38229097+c-edw@users.noreply.github.com> Date: Sun, 13 Jan 2019 14:22:49 +0000 Subject: [PATCH 1/2] Remove wlr_xdg_surface_send_close. --- include/wlr/types/wlr_xdg_shell.h | 9 +++++++-- rootston/xdg_shell.c | 4 ++-- types/xdg_shell/wlr_xdg_surface.c | 26 +++++++++++--------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h index 1bca9ef3..14100fda 100644 --- a/include/wlr/types/wlr_xdg_shell.h +++ b/include/wlr/types/wlr_xdg_shell.h @@ -296,9 +296,14 @@ uint32_t wlr_xdg_toplevel_set_tiled(struct wlr_xdg_surface *surface, uint32_t tiled_edges); /** - * Request that this xdg surface closes. + * Request that this xdg toplevel closes. */ -void wlr_xdg_surface_send_close(struct wlr_xdg_surface *surface); +void wlr_xdg_toplevel_send_close(struct wlr_xdg_surface *surface); + +/** + * Request that this xdg popup closes. + **/ +void wlr_xdg_popup_destroy(struct wlr_xdg_surface *surface); /** * Get the geometry for this positioner based on the anchor rect, gravity, and diff --git a/rootston/xdg_shell.c b/rootston/xdg_shell.c index da8909ba..918f90ab 100644 --- a/rootston/xdg_shell.c +++ b/rootston/xdg_shell.c @@ -248,9 +248,9 @@ static void close(struct roots_view *view) { struct wlr_xdg_surface *surface = view->xdg_surface; struct wlr_xdg_popup *popup = NULL; wl_list_for_each(popup, &surface->popups, link) { - wlr_xdg_surface_send_close(popup->base); + wlr_xdg_popup_destroy(popup->base); } - wlr_xdg_surface_send_close(surface); + wlr_xdg_toplevel_send_close(surface); } static void destroy(struct roots_view *view) { diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c index 17edbe47..5e353ba7 100644 --- a/types/xdg_shell/wlr_xdg_surface.c +++ b/types/xdg_shell/wlr_xdg_surface.c @@ -517,21 +517,17 @@ void wlr_xdg_surface_ping(struct wlr_xdg_surface *surface) { surface->client->ping_serial); } -void wlr_xdg_surface_send_close(struct wlr_xdg_surface *surface) { - switch (surface->role) { - case WLR_XDG_SURFACE_ROLE_NONE: - assert(0 && "not reached"); - break; - case WLR_XDG_SURFACE_ROLE_TOPLEVEL: - if (surface->toplevel) { - xdg_toplevel_send_close(surface->toplevel->resource); - } - break; - case WLR_XDG_SURFACE_ROLE_POPUP: - if (surface->popup) { - xdg_popup_send_popup_done(surface->popup->resource); - } - break; +void wlr_xdg_toplevel_send_close(struct wlr_xdg_surface *surface) { + if (surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL + && surface->toplevel) { + xdg_toplevel_send_close(surface->toplevel->resource); + } +} + +void wlr_xdg_popup_destroy(struct wlr_xdg_surface *surface) { + if (surface->role == WLR_XDG_SURFACE_ROLE_POPUP + && surface->popup) { + xdg_popup_send_popup_done(surface->popup->resource); } } From b1cdd2b4b3d5bb0eac47bd040df47717a66ee7d9 Mon Sep 17 00:00:00 2001 From: Connor E <38229097+c-edw@users.noreply.github.com> Date: Mon, 14 Jan 2019 16:05:24 +0000 Subject: [PATCH 2/2] Use assertions instead of guard. --- types/xdg_shell/wlr_xdg_surface.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c index 5e353ba7..0e98155a 100644 --- a/types/xdg_shell/wlr_xdg_surface.c +++ b/types/xdg_shell/wlr_xdg_surface.c @@ -518,17 +518,15 @@ void wlr_xdg_surface_ping(struct wlr_xdg_surface *surface) { } void wlr_xdg_toplevel_send_close(struct wlr_xdg_surface *surface) { - if (surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL - && surface->toplevel) { - xdg_toplevel_send_close(surface->toplevel->resource); - } + assert(surface->toplevel); + assert(surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL); + xdg_toplevel_send_close(surface->toplevel->resource); } void wlr_xdg_popup_destroy(struct wlr_xdg_surface *surface) { - if (surface->role == WLR_XDG_SURFACE_ROLE_POPUP - && surface->popup) { - xdg_popup_send_popup_done(surface->popup->resource); - } + assert(surface->popup); + assert(surface->role == WLR_XDG_SURFACE_ROLE_POPUP); + xdg_popup_send_popup_done(surface->popup->resource); } static void xdg_popup_get_position(struct wlr_xdg_popup *popup,