diff options
author | Simon Ser <contact@emersion.fr> | 2023-02-01 20:13:53 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2023-02-01 20:13:53 +0100 |
commit | f9bd416d4156942ce3951a6c5cf9f81a3cf4a3dd (patch) | |
tree | 76bce85fee176f7498451d82d083bfa12b6f675c | |
parent | 49cb85ad72aed7a94028e1a033b57b7576e8bec6 (diff) |
layer-shell-v1: convert to try_from
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/884
-rw-r--r-- | include/wlr/types/wlr_layer_shell_v1.h | 13 | ||||
-rw-r--r-- | types/wlr_layer_shell_v1.c | 19 |
2 files changed, 14 insertions, 18 deletions
diff --git a/include/wlr/types/wlr_layer_shell_v1.h b/include/wlr/types/wlr_layer_shell_v1.h index 4b231b7d..d94b5923 100644 --- a/include/wlr/types/wlr_layer_shell_v1.h +++ b/include/wlr/types/wlr_layer_shell_v1.h @@ -140,17 +140,12 @@ uint32_t wlr_layer_surface_v1_configure(struct wlr_layer_surface_v1 *surface, void wlr_layer_surface_v1_destroy(struct wlr_layer_surface_v1 *surface); /** - * Returns true if the surface has the layer surface role. - */ -bool wlr_surface_is_layer_surface(struct wlr_surface *surface); - -/** * Get a struct wlr_layer_surface from a struct wlr_surface. - * Asserts that the surface has the layer surface role. - * May return NULL even if the surface has the layer surface role if the - * corresponding layer surface has been destroyed. + * + * Returns NULL if the surface doesn't have the layer surface role or if + * the layer surface has been destroyed. */ -struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface( +struct wlr_layer_surface_v1 *wlr_layer_surface_v1_try_from_wlr_surface( struct wlr_surface *surface); /** diff --git a/types/wlr_layer_shell_v1.c b/types/wlr_layer_shell_v1.c index 5792b356..355e9566 100644 --- a/types/wlr_layer_shell_v1.c +++ b/types/wlr_layer_shell_v1.c @@ -38,13 +38,11 @@ struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_resource( static const struct wlr_surface_role layer_surface_role; -bool wlr_surface_is_layer_surface(struct wlr_surface *surface) { - return surface->role == &layer_surface_role; -} - -struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface( +struct wlr_layer_surface_v1 *wlr_layer_surface_v1_try_from_wlr_surface( struct wlr_surface *surface) { - assert(wlr_surface_is_layer_surface(surface)); + if (surface->role != &layer_surface_role) { + return NULL; + } return (struct wlr_layer_surface_v1 *)surface->role_data; } @@ -314,7 +312,8 @@ void wlr_layer_surface_v1_destroy(struct wlr_layer_surface_v1 *surface) { static void layer_surface_role_commit(struct wlr_surface *wlr_surface) { struct wlr_layer_surface_v1 *surface = - wlr_layer_surface_v1_from_wlr_surface(wlr_surface); + wlr_layer_surface_v1_try_from_wlr_surface(wlr_surface); + assert(surface != NULL); const uint32_t horiz = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT; @@ -366,7 +365,8 @@ static void layer_surface_role_commit(struct wlr_surface *wlr_surface) { static void layer_surface_role_precommit(struct wlr_surface *wlr_surface, const struct wlr_surface_state *state) { struct wlr_layer_surface_v1 *surface = - wlr_layer_surface_v1_from_wlr_surface(wlr_surface); + wlr_layer_surface_v1_try_from_wlr_surface(wlr_surface); + assert(surface != NULL); if (state->committed & WLR_SURFACE_STATE_BUFFER && state->buffer == NULL) { // This is a NULL commit @@ -378,7 +378,8 @@ static void layer_surface_role_precommit(struct wlr_surface *wlr_surface, static void layer_surface_role_destroy(struct wlr_surface *wlr_surface) { struct wlr_layer_surface_v1 *surface = - wlr_layer_surface_v1_from_wlr_surface(wlr_surface); + wlr_layer_surface_v1_try_from_wlr_surface(wlr_surface); + assert(surface != NULL); if (surface->configured && surface->mapped) { layer_surface_unmap(surface); |