summaryrefslogtreecommitdiffstats
path: root/audio/manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/manager.c')
-rw-r--r--audio/manager.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/audio/manager.c b/audio/manager.c
index 5a043f5e..ee44835c 100644
--- a/audio/manager.c
+++ b/audio/manager.c
@@ -491,10 +491,13 @@ static void ag_io_cb(GIOChannel *chan, int err, const bdaddr_t *src,
uuid = HFP_AG_UUID;
}
- device = manager_find_device(dst, NULL, FALSE);
+ device = manager_get_device(src, dst, NULL);
if (!device)
goto drop;
+ if (!device->headset)
+ device->headset = headset_init(device, NULL, 0);
+
if (headset_get_state(device) > HEADSET_STATE_DISCONNECTED) {
debug("Refusing new connection since one already exists");
goto drop;
@@ -685,7 +688,7 @@ static int audio_probe(struct btd_device *device, GSList *records)
adapter_get_address(adapter, &src);
device_get_address(device, &dst);
- dev = manager_get_device(&src, &dst, path, NULL);
+ dev = manager_get_device(&src, &dst, path);
if (!dev) {
debug("audio_probe: unable to get a device object");
return -1;
@@ -1057,14 +1060,12 @@ struct audio_device *manager_find_device(const bdaddr_t *bda, const char *interf
return NULL;
}
-struct audio_device *manager_get_device(bdaddr_t *src, bdaddr_t *dst,
- const char *path, gboolean *created)
+struct audio_device *manager_get_device(const bdaddr_t *src,
+ const bdaddr_t *dst,
+ const char *path)
{
struct audio_device *dev;
- if (created)
- *created = FALSE;
-
dev = manager_find_device(dst, NULL, FALSE);
if (dev)
return dev;
@@ -1100,8 +1101,5 @@ struct audio_device *manager_get_device(bdaddr_t *src, bdaddr_t *dst,
devices = g_slist_append(devices, dev);
- if (created)
- *created = TRUE;
-
return dev;
}