compositor-wayland: actually free parent_output

I could not find anywhere where struct parent_output was freed, so
apparently we were leaking it.

Check against wayland_backend_register_output() and add the missing
clean-up: removal from the parent output list, and free().

registry_handle_global_remove() also needs fixing to use a safer loop,
because now we are actually removing the list item.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Acked-by: Daniel Stone <daniels@collabora.com>
dev
Pekka Paalanen 7 years ago
parent 4dab58343b
commit f132279455
  1. 7
      libweston/compositor-wayland.c

@ -2333,6 +2333,9 @@ wayland_parent_output_destroy(struct wayland_parent_output *output)
wl_list_remove(&mode->link);
free(mode);
}
wl_list_remove(&output->link);
free(output);
}
static void
@ -2385,9 +2388,9 @@ registry_handle_global_remove(void *data, struct wl_registry *registry,
uint32_t name)
{
struct wayland_backend *b = data;
struct wayland_parent_output *output;
struct wayland_parent_output *output, *next;
wl_list_for_each(output, &b->parent.output_list, link)
wl_list_for_each_safe(output, next, &b->parent.output_list, link)
if (output->id == name)
wayland_parent_output_destroy(output);
}

Loading…
Cancel
Save