bluetooth: pass GDBusConnection to NMBluezDevice
No need to let NMBluezDevice ask for glib's G_BUS_TYPE_SYSTEM connection. We already have the right D-Bus connection at hand, just use it.
This commit is contained in:
@@ -61,6 +61,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
GDBusConnection *dbus_connection;
|
GDBusConnection *dbus_connection;
|
||||||
|
|
||||||
GDBusProxy *proxy;
|
GDBusProxy *proxy;
|
||||||
@@ -961,24 +962,6 @@ on_proxy_acquired (GObject *object, GAsyncResult *res, NMBluezDevice *self)
|
|||||||
g_object_unref (self);
|
g_object_unref (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
on_bus_acquired (GObject *object, GAsyncResult *res, NMBluezDevice *self)
|
|
||||||
{
|
|
||||||
NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
priv->dbus_connection = g_bus_get_finish (res, &error);
|
|
||||||
|
|
||||||
if (!priv->dbus_connection) {
|
|
||||||
nm_log_warn (LOGD_BT, "bluez[%s] failed to acquire bus connection: %s.", priv->path, error->message);
|
|
||||||
g_clear_error (&error);
|
|
||||||
g_signal_emit (self, signals[INITIALIZED], 0, FALSE);
|
|
||||||
} else
|
|
||||||
check_emit_usable (self);
|
|
||||||
|
|
||||||
g_object_unref (self);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1037,7 +1020,8 @@ nm_bluez_device_init (NMBluezDevice *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
NMBluezDevice *
|
NMBluezDevice *
|
||||||
nm_bluez_device_new (const char *path,
|
nm_bluez_device_new (GDBusConnection *dbus_connection,
|
||||||
|
const char *path,
|
||||||
NMSettings *settings)
|
NMSettings *settings)
|
||||||
{
|
{
|
||||||
NMBluezDevice *self;
|
NMBluezDevice *self;
|
||||||
@@ -1045,6 +1029,7 @@ nm_bluez_device_new (const char *path,
|
|||||||
|
|
||||||
g_return_val_if_fail (path != NULL, NULL);
|
g_return_val_if_fail (path != NULL, NULL);
|
||||||
g_return_val_if_fail (NM_IS_SETTINGS (settings), NULL);
|
g_return_val_if_fail (NM_IS_SETTINGS (settings), NULL);
|
||||||
|
g_return_val_if_fail (G_IS_DBUS_CONNECTION (dbus_connection), NULL);
|
||||||
|
|
||||||
self = (NMBluezDevice *) g_object_new (NM_TYPE_BLUEZ_DEVICE,
|
self = (NMBluezDevice *) g_object_new (NM_TYPE_BLUEZ_DEVICE,
|
||||||
NM_BLUEZ_DEVICE_PATH, path,
|
NM_BLUEZ_DEVICE_PATH, path,
|
||||||
@@ -1062,20 +1047,18 @@ nm_bluez_device_new (const char *path,
|
|||||||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_REMOVED, G_CALLBACK (cp_connection_removed), self);
|
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_REMOVED, G_CALLBACK (cp_connection_removed), self);
|
||||||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED, G_CALLBACK (cp_connection_updated), self);
|
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED, G_CALLBACK (cp_connection_updated), self);
|
||||||
|
|
||||||
g_bus_get (G_BUS_TYPE_SYSTEM,
|
priv->dbus_connection = g_object_ref (dbus_connection);
|
||||||
NULL,
|
|
||||||
(GAsyncReadyCallback) on_bus_acquired,
|
g_dbus_proxy_new (priv->dbus_connection,
|
||||||
g_object_ref (self));
|
G_DBUS_PROXY_FLAGS_NONE,
|
||||||
|
NULL,
|
||||||
|
NM_BLUEZ_SERVICE,
|
||||||
|
priv->path,
|
||||||
|
NM_BLUEZ5_DEVICE_INTERFACE,
|
||||||
|
NULL,
|
||||||
|
(GAsyncReadyCallback) on_proxy_acquired,
|
||||||
|
g_object_ref (self));
|
||||||
|
|
||||||
g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
|
|
||||||
G_DBUS_PROXY_FLAGS_NONE,
|
|
||||||
NULL,
|
|
||||||
NM_BLUEZ_SERVICE,
|
|
||||||
priv->path,
|
|
||||||
NM_BLUEZ5_DEVICE_INTERFACE,
|
|
||||||
NULL,
|
|
||||||
(GAsyncReadyCallback) on_proxy_acquired,
|
|
||||||
g_object_ref (self));
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -46,7 +46,8 @@ typedef struct _NMBluezDeviceClass NMBluezDeviceClass;
|
|||||||
|
|
||||||
GType nm_bluez_device_get_type (void);
|
GType nm_bluez_device_get_type (void);
|
||||||
|
|
||||||
NMBluezDevice *nm_bluez_device_new (const char *path,
|
NMBluezDevice *nm_bluez_device_new (GDBusConnection *dbus_connection,
|
||||||
|
const char *path,
|
||||||
NMSettings *settings);
|
NMSettings *settings);
|
||||||
|
|
||||||
const char *nm_bluez_device_get_path (NMBluezDevice *self);
|
const char *nm_bluez_device_get_path (NMBluezDevice *self);
|
||||||
|
@@ -346,7 +346,7 @@ device_added (GDBusProxy *proxy, const char *path, NMBluez5Manager *self)
|
|||||||
NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
|
NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
|
||||||
NMBluezDevice *device;
|
NMBluezDevice *device;
|
||||||
|
|
||||||
device = nm_bluez_device_new (path, priv->settings);
|
device = nm_bluez_device_new (g_dbus_proxy_get_connection (proxy), path, priv->settings);
|
||||||
g_signal_connect (device, NM_BLUEZ_DEVICE_INITIALIZED, G_CALLBACK (device_initialized), self);
|
g_signal_connect (device, NM_BLUEZ_DEVICE_INITIALIZED, G_CALLBACK (device_initialized), self);
|
||||||
g_signal_connect (device, "notify::" NM_BLUEZ_DEVICE_USABLE, G_CALLBACK (device_usable), self);
|
g_signal_connect (device, "notify::" NM_BLUEZ_DEVICE_USABLE, G_CALLBACK (device_usable), self);
|
||||||
g_hash_table_insert (priv->devices, (gpointer) nm_bluez_device_get_path (device), device);
|
g_hash_table_insert (priv->devices, (gpointer) nm_bluez_device_get_path (device), device);
|
||||||
|
Reference in New Issue
Block a user