diff options
-rw-r--r-- | audio/manager.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/audio/manager.c b/audio/manager.c index 00f5d931..23811ae2 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -1094,8 +1094,13 @@ static void parse_stored_devices(char *key, char *value, void *data) if (!key || !value || strcmp(key, "default") == 0) return; - info("Loading device %s (%s)", key, value); str2ba(key, &dst); + device = find_device(&dst); + + if (device) + return; + + info("Loading device %s (%s)", key, value); device = create_device(&dst); if (!device) @@ -1112,9 +1117,11 @@ static void register_devices_stored(const char *adapter) char filename[PATH_MAX + 1]; struct stat st; struct device *device; + bdaddr_t default_src; bdaddr_t src; bdaddr_t dst; char *addr; + int dev_id; create_name(filename, PATH_MAX, STORAGEDIR, adapter, "audio"); @@ -1128,6 +1135,14 @@ static void register_devices_stored(const char *adapter) textfile_foreach(filename, parse_stored_devices, &src); + bacpy(&default_src, BDADDR_ANY); + dev_id = hci_get_route(NULL); + if (dev_id < 0) + hci_devba(dev_id, &default_src); + + if (bacmp(&default_src, &src) != 0) + return; + addr = textfile_get(filename, "default"); if (!addr) return; |