https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/eb406bdb2cbbcd49c55c71285f8f2eddb624d24b From eb406bdb2cbbcd49c55c71285f8f2eddb624d24b Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Wed, 13 Jul 2022 13:38:14 +0300 Subject: [PATCH] dbus: fix crash when trying to reconnect When coming from on_sync_reconnect, data points to the WpDBus object instead of the activation transition. Fixes: #305 --- a/lib/wp/dbus.c +++ b/lib/wp/dbus.c @@ -58,14 +58,26 @@ wp_dbus_set_state (WpDbus *self, WpDBusState new_state) static void on_got_bus (GObject * obj, GAsyncResult * res, gpointer data) { - WpTransition *transition = WP_TRANSITION (data); - WpDbus *self = wp_transition_get_source_object (transition); + WpTransition *transition; + WpDbus *self; g_autoptr (GError) error = NULL; + if (WP_IS_TRANSITION (data)) { + // coming from wp_dbus_enable + transition = WP_TRANSITION (data); + self = wp_transition_get_source_object (transition); + } else { + // coming from on_sync_reconnect + transition = NULL; + self = WP_DBUS (data); + } + self->connection = g_dbus_connection_new_for_address_finish (res, &error); if (!self->connection) { - g_prefix_error (&error, "Failed to connect to bus: "); - wp_transition_return_error (transition, g_steal_pointer (&error)); + if (transition) { + g_prefix_error (&error, "Failed to connect to bus: "); + wp_transition_return_error (transition, g_steal_pointer (&error)); + } return; } GitLab