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>
wl_list_remove(&mode->link);
free(mode);
}
+
+ wl_list_remove(&output->link);
+ free(output);
}
static void
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);
}