wayland: Detach event source on tear down
No reason keeping it attached; would one continue using a main loop on the default main context after tear down, we'd get callbacks causing use-after-free issues. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2140>
This commit is contained in:
parent
754c834590
commit
ad0d70d5d5
@ -86,6 +86,8 @@ struct _MetaWaylandCompositor
|
|||||||
|
|
||||||
struct wl_display *wayland_display;
|
struct wl_display *wayland_display;
|
||||||
char *display_name;
|
char *display_name;
|
||||||
|
GSource *source;
|
||||||
|
|
||||||
GHashTable *outputs;
|
GHashTable *outputs;
|
||||||
GList *frame_callback_surfaces;
|
GList *frame_callback_surfaces;
|
||||||
|
|
||||||
|
@ -436,6 +436,7 @@ meta_wayland_compositor_finalize (GObject *object)
|
|||||||
|
|
||||||
g_clear_pointer (&compositor->display_name, g_free);
|
g_clear_pointer (&compositor->display_name, g_free);
|
||||||
g_clear_pointer (&compositor->wayland_display, wl_display_destroy);
|
g_clear_pointer (&compositor->wayland_display, wl_display_destroy);
|
||||||
|
g_clear_pointer (&compositor->source, g_source_destroy);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_wayland_compositor_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_wayland_compositor_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@ -542,6 +543,8 @@ meta_wayland_compositor_new (MetaContext *context)
|
|||||||
*/
|
*/
|
||||||
g_source_set_priority (wayland_event_source, GDK_PRIORITY_EVENTS + 1);
|
g_source_set_priority (wayland_event_source, GDK_PRIORITY_EVENTS + 1);
|
||||||
g_source_attach (wayland_event_source, NULL);
|
g_source_attach (wayland_event_source, NULL);
|
||||||
|
compositor->source = wayland_event_source;
|
||||||
|
g_source_unref (wayland_event_source);
|
||||||
|
|
||||||
g_signal_connect (stage, "after-update",
|
g_signal_connect (stage, "after-update",
|
||||||
G_CALLBACK (on_after_update), compositor);
|
G_CALLBACK (on_after_update), compositor);
|
||||||
|
Loading…
Reference in New Issue
Block a user