OSDN Git Service

Make sure audio driver is probed when handling an incoming connections.
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>
Thu, 14 May 2009 13:16:02 +0000 (10:16 -0300)
committerJohan Hedberg <johan.hedberg@nokia.com>
Thu, 14 May 2009 20:34:36 +0000 (23:34 +0300)
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.

audio/avdtp.c
audio/control.c

index ef198c2..d9c5307 100644 (file)
@@ -2080,10 +2080,15 @@ static void avdtp_confirm_cb(GIOChannel *chan, gpointer data)
                goto drop;
        }
 
-       dev = manager_get_device(&src, &dst, TRUE);
+       dev = manager_get_device(&src, &dst, FALSE);
        if (!dev) {
-               error("Unable to get audio device object for %s", address);
-               goto drop;
+               dev = manager_get_device(&src, &dst, TRUE);
+               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);
index 5cc4a31..39f1a50 100644 (file)
@@ -50,6 +50,7 @@
 #include "error.h"
 #include "uinput.h"
 #include "adapter.h"
+#include "../src/device.h"
 #include "device.h"
 #include "manager.h"
 #include "avdtp.h"
@@ -696,8 +697,11 @@ static void avctp_confirm_cb(GIOChannel *chan, gpointer data)
                goto drop;
        }
 
-       if (!dev->control)
-               dev->control = control_init(dev, AV_REMOTE_SVCLASS_ID);
+       if (!dev->control) {
+               btd_device_add_uuid(dev->btd_dev, AVRCP_REMOTE_UUID);
+               if (!dev->control)
+                       goto drop;
+       }
 
        control = dev->control;