compositor: Clean up view output move and destroy listeners
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Thu, 19 Dec 2013 16:34:28 +0000 (18:34 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 20 Dec 2013 05:52:09 +0000 (21:52 -0800)
Remove those listeners when the output is destroyed, otherwise they'll
point to invalid data that may lead to corruption when assigning a new
output for the view.

--
This is possibly related to bug 72845. I didn't have enough equipment
to try and reproduce it.

https://bugs.freedesktop.org/show_bug.cgi?id=72845

src/compositor.c

index 6ca297a..ff0f3ab 100644 (file)
@@ -413,6 +413,12 @@ weston_view_output_destroy_handler(struct wl_listener *listener,
 
        if (ev->surface->output_destroyed)
                ev->surface->output_destroyed(ev->surface);
+
+       wl_list_remove(&ev->output_move_listener.link);
+       wl_list_remove(&ev->output_destroy_listener.link);
+
+       wl_list_init(&ev->output_move_listener.link);
+       wl_list_init(&ev->output_destroy_listener.link);
 }
 
 WL_EXPORT struct weston_view *