diff --git a/proximity/monitor.c b/proximity/monitor.c
index 3e4f353..ba1982e 100644
--- a/proximity/monitor.c
+++ b/proximity/monitor.c
char *linklosslevel; /* Link Loss Alert Level */
char *immediatelevel; /* Immediate Alert Level */
char *signallevel; /* Path Loss RSSI level */
+ guint attioid;
};
static inline int create_filename(char *buf, size_t size,
{
struct monitor *monitor = user_data;
+ if (monitor->attioid)
+ btd_device_remove_attio_callback(monitor->device,
+ monitor->attioid);
+ if (monitor->attrib)
+ g_attrib_unref(monitor->attrib);
+
btd_device_unref(monitor->device);
g_free(monitor->linkloss);
g_free(monitor->immediate);
monitor->enabled.pathloss ? "TRUE" : "FALSE",
monitor->enabled.findme ? "TRUE" : "FALSE");
- btd_device_add_attio_callback(device, attio_connected_cb,
- attio_disconnected_cb, monitor);
+ if (monitor->enabled.linkloss || monitor->enabled.pathloss)
+ monitor->attioid = btd_device_add_attio_callback(device,
+ attio_connected_cb,
+ attio_disconnected_cb,
+ monitor);
return 0;
}