mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	bluez5: Share DBus connection between all backends
This commit is contained in:
		
							parent
							
								
									34fc7ff529
								
							
						
					
					
						commit
						4fb56ee69b
					
				
					 4 changed files with 15 additions and 25 deletions
				
			
		| 
						 | 
					@ -44,7 +44,6 @@ struct spa_bt_backend {
 | 
				
			||||||
	struct spa_log *log;
 | 
						struct spa_log *log;
 | 
				
			||||||
	struct spa_loop *main_loop;
 | 
						struct spa_loop *main_loop;
 | 
				
			||||||
	struct spa_dbus *dbus;
 | 
						struct spa_dbus *dbus;
 | 
				
			||||||
	struct spa_dbus_connection *dbus_connection;
 | 
					 | 
				
			||||||
	DBusConnection *conn;
 | 
						DBusConnection *conn;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -643,6 +642,7 @@ void backend_hsp_native_free(struct spa_bt_backend *backend)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
					struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support)
 | 
						  uint32_t n_support)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -656,14 +656,7 @@ struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
	backend->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
 | 
						backend->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
 | 
				
			||||||
	backend->dbus = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DBus);
 | 
						backend->dbus = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DBus);
 | 
				
			||||||
	backend->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
 | 
						backend->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
 | 
				
			||||||
 | 
						backend->conn = dbus_connection;
 | 
				
			||||||
	backend->dbus_connection = spa_dbus_get_connection(backend->dbus, SPA_DBUS_TYPE_SYSTEM);
 | 
					 | 
				
			||||||
	if (backend->dbus_connection == NULL) {
 | 
					 | 
				
			||||||
		spa_log_error(backend->log, "no dbus connection");
 | 
					 | 
				
			||||||
		free(backend);
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	backend->conn = spa_dbus_connection_get(backend->dbus_connection);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return backend;
 | 
						return backend;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,6 @@ struct spa_bt_backend {
 | 
				
			||||||
	struct spa_log *log;
 | 
						struct spa_log *log;
 | 
				
			||||||
	struct spa_loop *main_loop;
 | 
						struct spa_loop *main_loop;
 | 
				
			||||||
	struct spa_dbus *dbus;
 | 
						struct spa_dbus *dbus;
 | 
				
			||||||
	struct spa_dbus_connection *dbus_connection;
 | 
					 | 
				
			||||||
	DBusConnection *conn;
 | 
						DBusConnection *conn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned int filters_added:1;
 | 
						unsigned int filters_added:1;
 | 
				
			||||||
| 
						 | 
					@ -337,7 +336,7 @@ static DBusHandlerResult ofono_new_audio_connection(DBusConnection *conn, DBusMe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fail:
 | 
					fail:
 | 
				
			||||||
	if (r) {
 | 
						if (r) {
 | 
				
			||||||
			dbus_connection_send(spa_dbus_connection_get(backend->dbus_connection), r, NULL);
 | 
								dbus_connection_send(backend->conn, r, NULL);
 | 
				
			||||||
			dbus_message_unref(r);
 | 
								dbus_message_unref(r);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -602,6 +601,7 @@ void backend_ofono_free(struct spa_bt_backend *backend)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
					struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support)
 | 
						  uint32_t n_support)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -618,14 +618,7 @@ struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
	backend->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
 | 
						backend->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
 | 
				
			||||||
	backend->dbus = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DBus);
 | 
						backend->dbus = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DBus);
 | 
				
			||||||
	backend->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
 | 
						backend->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
 | 
				
			||||||
 | 
						backend->conn = dbus_connection;
 | 
				
			||||||
	backend->dbus_connection = spa_dbus_get_connection(backend->dbus, SPA_DBUS_TYPE_SYSTEM);
 | 
					 | 
				
			||||||
	if (backend->dbus_connection == NULL) {
 | 
					 | 
				
			||||||
		spa_log_error(backend->log, "no dbus connection");
 | 
					 | 
				
			||||||
    free(backend);
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	backend->conn = spa_dbus_connection_get(backend->dbus_connection);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!dbus_connection_register_object_path(backend->conn,
 | 
						if (!dbus_connection_register_object_path(backend->conn,
 | 
				
			||||||
						  OFONO_AUDIO_CLIENT,
 | 
											  OFONO_AUDIO_CLIENT,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1742,8 +1742,8 @@ impl_init(const struct spa_handle_factory *factory,
 | 
				
			||||||
	spa_list_init(&this->device_list);
 | 
						spa_list_init(&this->device_list);
 | 
				
			||||||
	spa_list_init(&this->transport_list);
 | 
						spa_list_init(&this->transport_list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	this->backend_hsp_native = backend_hsp_native_new(this, support, n_support);
 | 
						this->backend_hsp_native = backend_hsp_native_new(this, this->conn, support, n_support);
 | 
				
			||||||
	this->backend_ofono = backend_ofono_new(this, support, n_support);
 | 
						this->backend_ofono = backend_ofono_new(this, this->conn, support, n_support);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -299,14 +299,16 @@ static inline enum spa_bt_transport_state spa_bt_transport_state_from_string(con
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_BLUEZ_5_BACKEND_NATIVE
 | 
					#ifdef HAVE_BLUEZ_5_BACKEND_NATIVE
 | 
				
			||||||
struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
					struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support);
 | 
							uint32_t n_support);
 | 
				
			||||||
void backend_hsp_native_free(struct spa_bt_backend *backend);
 | 
					void backend_hsp_native_free(struct spa_bt_backend *backend);
 | 
				
			||||||
void backend_hsp_native_register_profiles(struct spa_bt_backend *backend);
 | 
					void backend_hsp_native_register_profiles(struct spa_bt_backend *backend);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
static inline struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
					static inline struct spa_bt_backend *backend_hsp_native_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support) {
 | 
							uint32_t n_support) {
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
static inline void backend_hsp_native_free(struct spa_bt_backend *backend) {}
 | 
					static inline void backend_hsp_native_free(struct spa_bt_backend *backend) {}
 | 
				
			||||||
| 
						 | 
					@ -315,14 +317,16 @@ static inline void backend_hsp_native_register_profiles(struct spa_bt_backend *b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_BLUEZ_5_BACKEND_OFONO
 | 
					#ifdef HAVE_BLUEZ_5_BACKEND_OFONO
 | 
				
			||||||
struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
					struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support);
 | 
							uint32_t n_support);
 | 
				
			||||||
void backend_ofono_free(struct spa_bt_backend *backend);
 | 
					void backend_ofono_free(struct spa_bt_backend *backend);
 | 
				
			||||||
void backend_ofono_add_filters(struct spa_bt_backend *backend);
 | 
					void backend_ofono_add_filters(struct spa_bt_backend *backend);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
static inline struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
					static inline struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
 | 
				
			||||||
 | 
							void *dbus_connection,
 | 
				
			||||||
		const struct spa_support *support,
 | 
							const struct spa_support *support,
 | 
				
			||||||
	  uint32_t n_support) {
 | 
							uint32_t n_support) {
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
static inline void backend_ofono_free(struct spa_bt_backend *backend) {}
 | 
					static inline void backend_ofono_free(struct spa_bt_backend *backend) {}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue