46 lines
1.5 KiB
Diff
46 lines
1.5 KiB
Diff
https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/eb406bdb2cbbcd49c55c71285f8f2eddb624d24b
|
|
|
|
From eb406bdb2cbbcd49c55c71285f8f2eddb624d24b Mon Sep 17 00:00:00 2001
|
|
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
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
|