tablet-v2: fix memory leak on OOM, fix resource version
This commit is contained in:
parent
f9eb5df80e
commit
a9e02a9ea6
|
@ -188,10 +188,9 @@ static void add_tablet_pad_group(struct wlr_tablet_v2_tablet_pad *pad,
|
||||||
struct wlr_tablet_pad_client_v2 *client,
|
struct wlr_tablet_pad_client_v2 *client,
|
||||||
struct wlr_tablet_pad_group *group, size_t index) {
|
struct wlr_tablet_pad_group *group, size_t index) {
|
||||||
|
|
||||||
int version = wl_resource_get_version(client->resource);
|
uint32_t version = wl_resource_get_version(client->resource);
|
||||||
client->groups[index] =
|
client->groups[index] = wl_resource_create(client->client,
|
||||||
wl_resource_create(client->client, &zwp_tablet_pad_group_v2_interface,
|
&zwp_tablet_pad_group_v2_interface, version, 0);
|
||||||
version, 0);
|
|
||||||
if (!client->groups[index]) {
|
if (!client->groups[index]) {
|
||||||
wl_client_post_no_memory(client->client);
|
wl_client_post_no_memory(client->client);
|
||||||
return;
|
return;
|
||||||
|
@ -228,15 +227,17 @@ static void add_tablet_pad_group(struct wlr_tablet_v2_tablet_pad *pad,
|
||||||
}
|
}
|
||||||
user_data->pad = client;
|
user_data->pad = client;
|
||||||
user_data->index = strip;
|
user_data->index = strip;
|
||||||
client->strips[strip] =
|
client->strips[strip] = wl_resource_create(client->client,
|
||||||
wl_resource_create(client->client, &zwp_tablet_pad_strip_v2_interface, 1, 0);
|
&zwp_tablet_pad_strip_v2_interface, version, 0);
|
||||||
if (!client->strips[strip]) {
|
if (!client->strips[strip]) {
|
||||||
|
free(user_data);
|
||||||
wl_client_post_no_memory(client->client);
|
wl_client_post_no_memory(client->client);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wl_resource_set_implementation(client->strips[strip],
|
wl_resource_set_implementation(client->strips[strip],
|
||||||
&tablet_pad_strip_impl, user_data, destroy_tablet_pad_strip_v2);
|
&tablet_pad_strip_impl, user_data, destroy_tablet_pad_strip_v2);
|
||||||
zwp_tablet_pad_group_v2_send_strip(client->groups[index], client->strips[strip]);
|
zwp_tablet_pad_group_v2_send_strip(client->groups[index],
|
||||||
|
client->strips[strip]);
|
||||||
}
|
}
|
||||||
|
|
||||||
client->ring_count = group->ring_count;
|
client->ring_count = group->ring_count;
|
||||||
|
@ -250,15 +251,17 @@ static void add_tablet_pad_group(struct wlr_tablet_v2_tablet_pad *pad,
|
||||||
}
|
}
|
||||||
user_data->pad = client;
|
user_data->pad = client;
|
||||||
user_data->index = ring;
|
user_data->index = ring;
|
||||||
client->rings[ring] =
|
client->rings[ring] = wl_resource_create(client->client,
|
||||||
wl_resource_create(client->client, &zwp_tablet_pad_ring_v2_interface, 1, 0);
|
&zwp_tablet_pad_ring_v2_interface, version, 0);
|
||||||
if (!client->rings[ring]) {
|
if (!client->rings[ring]) {
|
||||||
|
free(user_data);
|
||||||
wl_client_post_no_memory(client->client);
|
wl_client_post_no_memory(client->client);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wl_resource_set_implementation(client->rings[ring],
|
wl_resource_set_implementation(client->rings[ring],
|
||||||
&tablet_pad_ring_impl, user_data, destroy_tablet_pad_ring_v2);
|
&tablet_pad_ring_impl, user_data, destroy_tablet_pad_ring_v2);
|
||||||
zwp_tablet_pad_group_v2_send_ring(client->groups[index], client->rings[ring]);
|
zwp_tablet_pad_group_v2_send_ring(client->groups[index],
|
||||||
|
client->rings[ring]);
|
||||||
}
|
}
|
||||||
|
|
||||||
zwp_tablet_pad_group_v2_send_done(client->groups[index]);
|
zwp_tablet_pad_group_v2_send_done(client->groups[index]);
|
||||||
|
|
Loading…
Reference in New Issue