kms/update: Use callback helper to free page flip listener data

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2777>
This commit is contained in:
Jonas Ådahl 2022-12-21 18:51:05 +01:00
parent 6059d8f42d
commit 40caa6d87c

View File

@ -193,35 +193,21 @@ meta_kms_mode_set_free (MetaKmsModeSet *mode_set)
g_free (mode_set); g_free (mode_set);
} }
static gboolean
noop_callback (gpointer user_data)
{
return G_SOURCE_REMOVE;
}
static void static void
meta_kms_page_flip_listener_unref (MetaKmsPageFlipListener *listener) meta_kms_page_flip_listener_unref (MetaKmsPageFlipListener *listener)
{ {
MetaKmsDevice *device;
if (!g_atomic_ref_count_dec (&listener->ref_count)) if (!g_atomic_ref_count_dec (&listener->ref_count))
return; return;
if (listener->main_context == g_main_context_get_thread_default ()) device = meta_kms_crtc_get_device (listener->crtc);
{ meta_kms_queue_callback (meta_kms_device_get_kms (device),
g_clear_pointer (&listener->user_data, listener->destroy_notify); listener->main_context,
g_free (listener); NULL,
} g_steal_pointer (&listener->user_data),
else g_steal_pointer (&listener->destroy_notify));
{ g_free (listener);
GSource *source;
source = g_idle_source_new ();
g_source_set_callback (source, noop_callback,
g_steal_pointer (&listener->user_data),
g_steal_pointer (&listener->destroy_notify));
g_source_attach (source, listener->main_context);
g_source_unref (source);
g_free (listener);
}
} }
static gboolean static gboolean