diff --git a/src/device.c b/src/device.c
index 5f32e91..1f45211 100644
--- a/src/device.c
+++ b/src/device.c
attio->dcfunc(attio->user_data);
}
+static gboolean att_auto_connect(gpointer user_data);
+
static void attrib_destroyed(gpointer user_data)
{
struct btd_device *device = user_data;
device->attrib = NULL;
g_slist_foreach(device->attios, attio_disconnected, NULL);
+
+ if (device->attioid == 0 && device->attios != NULL)
+ device->attioid = g_timeout_add_seconds(AUTOCONNECT_INTERVAL,
+ att_auto_connect,
+ device);
}
static void primary_cb(GSList *services, guint8 status, gpointer user_data)
return;
}
+ if (device->attioid) {
+ g_source_remove(device->attioid);
+ device->attioid = 0;
+ }
+
device->attrib = g_attrib_new(io);
g_attrib_set_destroy_function(device->attrib, attrib_destroyed, device);
if (device->attrib && cfunc)
cfunc(device->attrib, user_data);
- if (device->attioid == 0)
+ if (device->attioid == 0 && device->attrib == NULL)
device->attioid = g_timeout_add_seconds(AUTOCONNECT_INTERVAL,
att_auto_connect,
device);