diff options
Diffstat (limited to 'audio/manager.c')
-rw-r--r-- | audio/manager.c | 18 |
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; } |