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;  } | 
