layer-shell: Make wlr_layer_surface_v1_from_resource public

This allows compositors to leverage the `wl_instance_of` based type
check.
This commit is contained in:
Guido Günther 2022-03-08 12:26:59 +01:00 committed by Simon Ser
parent aaf787ee56
commit 4cc2a03620
2 changed files with 21 additions and 10 deletions

View File

@ -178,4 +178,11 @@ struct wlr_surface *wlr_layer_surface_v1_popup_surface_at(
struct wlr_layer_surface_v1 *surface, double sx, double sy,
double *sub_x, double *sub_y);
/** Get the corresponding wlr_layer_surface_v1 from a resource.
*
* Aborts if the resource doesn't have the correct type.
*/
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_resource(
struct wl_resource *resource);
#endif

View File

@ -28,7 +28,7 @@ static struct wlr_layer_shell_v1 *layer_shell_from_resource(
return wl_resource_get_user_data(resource);
}
static struct wlr_layer_surface_v1 *layer_surface_from_resource(
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_resource(
struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface,
&layer_surface_implementation));
@ -58,7 +58,8 @@ static void layer_surface_configure_destroy(
static void layer_surface_handle_ack_configure(struct wl_client *client,
struct wl_resource *resource, uint32_t serial) {
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -98,7 +99,8 @@ static void layer_surface_handle_ack_configure(struct wl_client *client,
static void layer_surface_handle_set_size(struct wl_client *client,
struct wl_resource *resource, uint32_t width, uint32_t height) {
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -127,7 +129,8 @@ static void layer_surface_handle_set_anchor(struct wl_client *client,
ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR,
"invalid anchor %" PRIu32, anchor);
}
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -144,7 +147,7 @@ static void layer_surface_handle_set_anchor(struct wl_client *client,
static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
struct wl_resource *resource, int32_t zone) {
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -162,7 +165,8 @@ static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
static void layer_surface_handle_set_margin(
struct wl_client *client, struct wl_resource *resource,
int32_t top, int32_t right, int32_t bottom, int32_t left) {
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -186,7 +190,7 @@ static void layer_surface_handle_set_margin(
static void layer_surface_handle_set_keyboard_interactivity(
struct wl_client *client, struct wl_resource *resource,
uint32_t interactive) {
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = wlr_layer_surface_v1_from_resource(resource);
if (!surface) {
return;
@ -210,7 +214,7 @@ static void layer_surface_handle_get_popup(struct wl_client *client,
struct wl_resource *layer_resource,
struct wl_resource *popup_resource) {
struct wlr_layer_surface_v1 *parent =
layer_surface_from_resource(layer_resource);
wlr_layer_surface_v1_from_resource(layer_resource);
struct wlr_xdg_popup *popup =
wlr_xdg_popup_from_resource(popup_resource);
@ -225,7 +229,7 @@ static void layer_surface_handle_get_popup(struct wl_client *client,
static void layer_surface_set_layer(struct wl_client *client,
struct wl_resource *surface_resource, uint32_t layer) {
struct wlr_layer_surface_v1 *surface =
layer_surface_from_resource(surface_resource);
wlr_layer_surface_v1_from_resource(surface_resource);
if (!surface) {
return;
}
@ -288,7 +292,7 @@ static void layer_surface_destroy(struct wlr_layer_surface_v1 *surface) {
static void layer_surface_resource_destroy(struct wl_resource *resource) {
struct wlr_layer_surface_v1 *surface =
layer_surface_from_resource(resource);
wlr_layer_surface_v1_from_resource(resource);
if (surface != NULL) {
layer_surface_destroy(surface);
}