Exemplo n.º 1
0
static void
bluez_cleanup (NMBluezManager *self, gboolean do_signal)
{
    NMBluezManagerPrivate *priv = NM_BLUEZ_MANAGER_GET_PRIVATE (self);

    if (priv->proxy) {
        g_object_unref (priv->proxy);
        priv->proxy = NULL;
    }

    remove_all_devices (self, do_signal);
}
Exemplo n.º 2
0
static void
bluez_cleanup (NMBluez5Manager *self, gboolean do_signal)
{
	NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);

	if (priv->proxy) {
		g_signal_handlers_disconnect_by_func (priv->proxy, G_CALLBACK (name_owner_changed_cb), self);
		g_clear_object (&priv->proxy);
	}

	if (do_signal)
		remove_all_devices (self);
	else
		g_hash_table_remove_all (priv->devices);
}
Exemplo n.º 3
0
static void
name_owner_changed_cb (GObject *object,
                       GParamSpec *pspec,
                       gpointer user_data)
{
	NMBluez5Manager *self = NM_BLUEZ5_MANAGER (user_data);
	NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self);
	char *owner;

	if (priv->devices) {
		owner = g_dbus_proxy_get_name_owner (priv->proxy);
		if (!owner)
			remove_all_devices (self);
		g_free (owner);
	}
}
Exemplo n.º 4
0
static void
name_owner_changed_cb (NMDBusManager *dbus_mgr,
                       const char *name,
                       const char *old_owner,
                       const char *new_owner,
                       gpointer user_data)
{
    NMBluezManager *self = NM_BLUEZ_MANAGER (user_data);
    gboolean old_owner_good = (old_owner && strlen (old_owner));
    gboolean new_owner_good = (new_owner && strlen (new_owner));

    /* Can't handle the signal if its not from the Bluez */
    if (strcmp (BLUEZ_SERVICE, name))
        return;

    if (!old_owner_good && new_owner_good)
        query_default_adapter (self);
    else if (old_owner_good && !new_owner_good)
        remove_all_devices (self, TRUE);
}