Make sure audio driver is probed when handling an incoming connections.

Driver should be probed when adding a reference so that can be released
when the device is temporary using .remove callback. In case of AVDTP as
it is not possible to verify if it is a source or sink it uses the same
uuid used for authorization request which is advance audio uuid.
This commit is contained in:
Luiz Augusto von Dentz 2009-05-14 10:16:02 -03:00 committed by Johan Hedberg
parent a6a65ceb00
commit 24bd55a4a3
2 changed files with 14 additions and 5 deletions

View File

@ -2080,10 +2080,15 @@ static void avdtp_confirm_cb(GIOChannel *chan, gpointer data)
goto drop; goto drop;
} }
dev = manager_get_device(&src, &dst, TRUE); dev = manager_get_device(&src, &dst, FALSE);
if (!dev) { if (!dev) {
error("Unable to get audio device object for %s", address); dev = manager_get_device(&src, &dst, TRUE);
goto drop; if (!dev) {
error("Unable to get audio device object for %s",
address);
goto drop;
}
btd_device_add_uuid(dev->btd_dev, ADVANCED_AUDIO_UUID);
} }
session->io = g_io_channel_ref(chan); session->io = g_io_channel_ref(chan);

View File

@ -50,6 +50,7 @@
#include "error.h" #include "error.h"
#include "uinput.h" #include "uinput.h"
#include "adapter.h" #include "adapter.h"
#include "../src/device.h"
#include "device.h" #include "device.h"
#include "manager.h" #include "manager.h"
#include "avdtp.h" #include "avdtp.h"
@ -696,8 +697,11 @@ static void avctp_confirm_cb(GIOChannel *chan, gpointer data)
goto drop; goto drop;
} }
if (!dev->control) if (!dev->control) {
dev->control = control_init(dev, AV_REMOTE_SVCLASS_ID); btd_device_add_uuid(dev->btd_dev, AVRCP_REMOTE_UUID);
if (!dev->control)
goto drop;
}
control = dev->control; control = dev->control;