mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-25 14:15:58 +01:00
compositor: introduce wlr_surface_destroy_role_object()
This commit is contained in:
parent
1243a855d4
commit
756260ac05
2 changed files with 20 additions and 2 deletions
|
@ -76,6 +76,7 @@ struct wlr_surface_role {
|
||||||
void (*commit)(struct wlr_surface *surface);
|
void (*commit)(struct wlr_surface *surface);
|
||||||
void (*precommit)(struct wlr_surface *surface,
|
void (*precommit)(struct wlr_surface *surface,
|
||||||
const struct wlr_surface_state *state);
|
const struct wlr_surface_state *state);
|
||||||
|
void (*destroy)(struct wlr_surface *surface);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_surface_output {
|
struct wlr_surface_output {
|
||||||
|
@ -189,8 +190,13 @@ typedef void (*wlr_surface_iterator_func_t)(struct wlr_surface *surface,
|
||||||
* the role cannot be set.
|
* the role cannot be set.
|
||||||
*/
|
*/
|
||||||
bool wlr_surface_set_role(struct wlr_surface *surface,
|
bool wlr_surface_set_role(struct wlr_surface *surface,
|
||||||
const struct wlr_surface_role *role, void *role_data,
|
const struct wlr_surface_role *role, void *role_data,
|
||||||
struct wl_resource *error_resource, uint32_t error_code);
|
struct wl_resource *error_resource, uint32_t error_code);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroy the role object for this surface. This doesn't reset the role.
|
||||||
|
*/
|
||||||
|
void wlr_surface_destroy_role_object(struct wlr_surface *surface);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not this surface currently has an attached buffer. A surface has
|
* Whether or not this surface currently has an attached buffer. A surface has
|
||||||
|
|
|
@ -622,6 +622,8 @@ static void surface_handle_resource_destroy(struct wl_resource *resource) {
|
||||||
surface_output_destroy(surface_output);
|
surface_output_destroy(surface_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wlr_surface_destroy_role_object(surface);
|
||||||
|
|
||||||
wl_signal_emit_mutable(&surface->events.destroy, surface);
|
wl_signal_emit_mutable(&surface->events.destroy, surface);
|
||||||
|
|
||||||
wlr_addon_set_finish(&surface->addons);
|
wlr_addon_set_finish(&surface->addons);
|
||||||
|
@ -732,6 +734,16 @@ bool wlr_surface_set_role(struct wlr_surface *surface,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wlr_surface_destroy_role_object(struct wlr_surface *surface) {
|
||||||
|
if (surface->role_data == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (surface->role->destroy != NULL) {
|
||||||
|
surface->role->destroy(surface);
|
||||||
|
}
|
||||||
|
surface->role_data = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t wlr_surface_lock_pending(struct wlr_surface *surface) {
|
uint32_t wlr_surface_lock_pending(struct wlr_surface *surface) {
|
||||||
surface->pending.cached_state_locks++;
|
surface->pending.cached_state_locks++;
|
||||||
return surface->pending.seq;
|
return surface->pending.seq;
|
||||||
|
|
Loading…
Reference in a new issue