xdg-{toplevel,popup}: extract destructors

This commit is contained in:
Kirill Primak 2022-02-05 10:29:42 +03:00 committed by Simon Ser
parent edfb332b24
commit b5b15b2625
4 changed files with 15 additions and 6 deletions

View File

@ -31,11 +31,13 @@ void create_xdg_popup(struct wlr_xdg_surface *surface,
struct wlr_xdg_surface *parent,
struct wlr_xdg_positioner_resource *positioner, uint32_t id);
void unmap_xdg_popup(struct wlr_xdg_popup *popup);
void destroy_xdg_popup(struct wlr_xdg_popup *popup);
void handle_xdg_popup_committed(struct wlr_xdg_popup *popup);
void create_xdg_toplevel(struct wlr_xdg_surface *surface,
uint32_t id);
void unmap_xdg_toplevel(struct wlr_xdg_toplevel *toplevel);
void destroy_xdg_toplevel(struct wlr_xdg_toplevel *toplevel);
void handle_xdg_toplevel_committed(struct wlr_xdg_toplevel *toplevel);
struct wlr_xdg_toplevel_configure *send_xdg_toplevel_configure(
struct wlr_xdg_toplevel *toplevel);

View File

@ -389,6 +389,12 @@ void unmap_xdg_popup(struct wlr_xdg_popup *popup) {
}
}
void destroy_xdg_popup(struct wlr_xdg_popup *popup) {
wl_list_remove(&popup->link);
wl_resource_set_user_data(popup->resource, NULL);
free(popup);
}
void wlr_xdg_popup_destroy(struct wlr_xdg_popup *popup) {
if (popup == NULL) {
return;

View File

@ -411,15 +411,11 @@ void reset_xdg_surface(struct wlr_xdg_surface *surface) {
switch (surface->role) {
case WLR_XDG_SURFACE_ROLE_TOPLEVEL:
wl_resource_set_user_data(surface->toplevel->resource, NULL);
free(surface->toplevel);
destroy_xdg_toplevel(surface->toplevel);
surface->toplevel = NULL;
break;
case WLR_XDG_SURFACE_ROLE_POPUP:
wl_list_remove(&surface->popup->link);
wl_resource_set_user_data(surface->popup->resource, NULL);
free(surface->popup);
destroy_xdg_popup(surface->popup);
surface->popup = NULL;
break;
case WLR_XDG_SURFACE_ROLE_NONE:

View File

@ -493,6 +493,11 @@ void unmap_xdg_toplevel(struct wlr_xdg_toplevel *toplevel) {
toplevel->requested.minimized = false;
}
void destroy_xdg_toplevel(struct wlr_xdg_toplevel *toplevel) {
wl_resource_set_user_data(toplevel->resource, NULL);
free(toplevel);
}
void wlr_xdg_toplevel_send_close(struct wlr_xdg_toplevel *toplevel) {
xdg_toplevel_send_close(toplevel->resource);
}