dont allocate xdg-positioner attrs

This commit is contained in:
Tony Crisci 2018-03-28 18:33:21 -04:00
parent 376d1cc0da
commit bd828e23de
1 changed files with 15 additions and 20 deletions

View File

@ -18,7 +18,7 @@ static const char *wlr_desktop_xdg_popup_role = "xdg_popup_v6";
struct wlr_xdg_positioner_v6_resource { struct wlr_xdg_positioner_v6_resource {
struct wl_resource *resource; struct wl_resource *resource;
struct wlr_xdg_positioner_v6 *attrs; struct wlr_xdg_positioner_v6 attrs;
}; };
static void resource_handle_destroy(struct wl_client *client, static void resource_handle_destroy(struct wl_client *client,
@ -297,7 +297,6 @@ static struct wlr_xdg_positioner_v6_resource *xdg_positioner_from_resource(
static void xdg_positioner_destroy(struct wl_resource *resource) { static void xdg_positioner_destroy(struct wl_resource *resource) {
struct wlr_xdg_positioner_v6_resource *positioner = struct wlr_xdg_positioner_v6_resource *positioner =
xdg_positioner_from_resource(resource); xdg_positioner_from_resource(resource);
free(positioner->attrs);
free(positioner); free(positioner);
} }
@ -313,8 +312,8 @@ static void xdg_positioner_handle_set_size(struct wl_client *client,
return; return;
} }
positioner->attrs->size.width = width; positioner->attrs.size.width = width;
positioner->attrs->size.height = height; positioner->attrs.size.height = height;
} }
static void xdg_positioner_handle_set_anchor_rect(struct wl_client *client, static void xdg_positioner_handle_set_anchor_rect(struct wl_client *client,
@ -330,10 +329,10 @@ static void xdg_positioner_handle_set_anchor_rect(struct wl_client *client,
return; return;
} }
positioner->attrs->anchor_rect.x = x; positioner->attrs.anchor_rect.x = x;
positioner->attrs->anchor_rect.y = y; positioner->attrs.anchor_rect.y = y;
positioner->attrs->anchor_rect.width = width; positioner->attrs.anchor_rect.width = width;
positioner->attrs->anchor_rect.height = height; positioner->attrs.anchor_rect.height = height;
} }
static void xdg_positioner_handle_set_anchor(struct wl_client *client, static void xdg_positioner_handle_set_anchor(struct wl_client *client,
@ -351,7 +350,7 @@ static void xdg_positioner_handle_set_anchor(struct wl_client *client,
return; return;
} }
positioner->attrs->anchor = anchor; positioner->attrs.anchor = anchor;
} }
static void xdg_positioner_handle_set_gravity(struct wl_client *client, static void xdg_positioner_handle_set_gravity(struct wl_client *client,
@ -369,7 +368,7 @@ static void xdg_positioner_handle_set_gravity(struct wl_client *client,
return; return;
} }
positioner->attrs->gravity = gravity; positioner->attrs.gravity = gravity;
} }
static void xdg_positioner_handle_set_constraint_adjustment( static void xdg_positioner_handle_set_constraint_adjustment(
@ -378,7 +377,7 @@ static void xdg_positioner_handle_set_constraint_adjustment(
struct wlr_xdg_positioner_v6_resource *positioner = struct wlr_xdg_positioner_v6_resource *positioner =
xdg_positioner_from_resource(resource); xdg_positioner_from_resource(resource);
positioner->attrs->constraint_adjustment = constraint_adjustment; positioner->attrs.constraint_adjustment = constraint_adjustment;
} }
static void xdg_positioner_handle_set_offset(struct wl_client *client, static void xdg_positioner_handle_set_offset(struct wl_client *client,
@ -386,8 +385,8 @@ static void xdg_positioner_handle_set_offset(struct wl_client *client,
struct wlr_xdg_positioner_v6_resource *positioner = struct wlr_xdg_positioner_v6_resource *positioner =
xdg_positioner_from_resource(resource); xdg_positioner_from_resource(resource);
positioner->attrs->offset.x = x; positioner->attrs.offset.x = x;
positioner->attrs->offset.y = y; positioner->attrs.offset.y = y;
} }
static const struct zxdg_positioner_v6_interface static const struct zxdg_positioner_v6_interface
@ -411,10 +410,6 @@ static void xdg_shell_handle_create_positioner(struct wl_client *wl_client,
return; return;
} }
// TODO: allocate the positioner attrs?
positioner->attrs =
calloc(1, sizeof(struct wlr_xdg_positioner_v6));
positioner->resource = wl_resource_create(wl_client, positioner->resource = wl_resource_create(wl_client,
&zxdg_positioner_v6_interface, &zxdg_positioner_v6_interface,
wl_resource_get_version(resource), wl_resource_get_version(resource),
@ -587,7 +582,7 @@ static void xdg_surface_handle_get_popup(struct wl_client *client,
struct wlr_xdg_positioner_v6_resource *positioner = struct wlr_xdg_positioner_v6_resource *positioner =
xdg_positioner_from_resource(positioner_resource); xdg_positioner_from_resource(positioner_resource);
if (positioner->attrs->size.width == 0 || positioner->attrs->anchor_rect.width == 0) { if (positioner->attrs.size.width == 0 || positioner->attrs.anchor_rect.width == 0) {
wl_resource_post_error(resource, wl_resource_post_error(resource,
ZXDG_SHELL_V6_ERROR_INVALID_POSITIONER, ZXDG_SHELL_V6_ERROR_INVALID_POSITIONER,
"positioner object is not complete"); "positioner object is not complete");
@ -618,10 +613,10 @@ static void xdg_surface_handle_get_popup(struct wl_client *client,
surface->popup->base = surface; surface->popup->base = surface;
surface->popup->parent = parent; surface->popup->parent = parent;
surface->popup->geometry = surface->popup->geometry =
wlr_xdg_positioner_v6_get_geometry(positioner->attrs); wlr_xdg_positioner_v6_get_geometry(&positioner->attrs);
// positioner properties // positioner properties
memcpy(&surface->popup->positioner, positioner->attrs, memcpy(&surface->popup->positioner, &positioner->attrs,
sizeof(struct wlr_xdg_positioner_v6)); sizeof(struct wlr_xdg_positioner_v6));
wl_list_insert(&parent->popups, &surface->popup->link); wl_list_insert(&parent->popups, &surface->popup->link);