compositor-wayland: Properly clean up on backend destroy

Also remove a wrong XXX comment.

Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
diff --git a/libweston/compositor-wayland.c b/libweston/compositor-wayland.c
index 46dbe6c..ec5df90 100644
--- a/libweston/compositor-wayland.c
+++ b/libweston/compositor-wayland.c
@@ -1244,7 +1244,6 @@
 	output->base.make = poutput->physical.make;
 	output->base.model = poutput->physical.model;
 
-	/* XXX: Clear previously added values */
 	wl_list_init(&output->base.mode_list);
 	wl_list_insert_list(&output->base.mode_list, &poutput->mode_list);
 	wl_list_init(&poutput->mode_list);
@@ -2234,11 +2233,31 @@
 {
 	struct wayland_backend *b = to_wayland_backend(ec);
 
+	wl_event_source_remove(b->parent.wl_source);
+
 	weston_compositor_shutdown(ec);
 
 	if (b->parent.shm)
 		wl_shm_destroy(b->parent.shm);
 
+	if (b->parent.fshell)
+		zwp_fullscreen_shell_v1_release(b->parent.fshell);
+
+	if (b->parent.compositor)
+		wl_compositor_destroy(b->parent.compositor);
+
+	wl_registry_destroy(b->parent.registry);
+	wl_display_flush(b->parent.wl_display);
+	wl_display_disconnect(b->parent.wl_display);
+
+	if (b->theme)
+		theme_destroy(b->theme);
+
+	if (b->frame_device)
+		cairo_device_destroy(b->frame_device);
+
+	wl_cursor_theme_destroy(b->cursor_theme);
+
 	free(b);
 }