diff options
Diffstat (limited to 'audio')
-rw-r--r-- | audio/avdtp.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/audio/avdtp.c b/audio/avdtp.c index 63b9bdc4..98cbbab4 100644 --- a/audio/avdtp.c +++ b/audio/avdtp.c @@ -1041,6 +1041,8 @@ static gboolean avdtp_setconf_cmd(struct avdtp *session, struct avdtp_local_sep *sep; struct avdtp_stream *stream; uint8_t err, category = 0x00; + struct audio_device *dev; + bdaddr_t src, dst; if (size < sizeof(struct setconf_req)) { error("Too short getcap request"); @@ -1058,6 +1060,23 @@ static gboolean avdtp_setconf_cmd(struct avdtp *session, goto failed; } + avdtp_get_peers(session, &src, &dst); + dev = manager_get_device(&src, &dst, NULL); + if (!dev) { + error("Unable to get a audio device object"); + goto failed; + } + + switch (sep->info.type) { + case AVDTP_SEP_TYPE_SOURCE: + if (!dev->sink) + dev->sink = sink_init(dev); + break; + case AVDTP_SEP_TYPE_SINK: + /* Do source_init() here when it's implemented */ + break; + } + stream = g_new0(struct avdtp_stream, 1); stream->session = session; stream->lsep = sep; @@ -2788,9 +2807,6 @@ static void avdtp_server_cb(GIOChannel *chan, int err, const bdaddr_t *src, goto drop; } - if (!dev->sink) - dev->sink = sink_init(dev); - session->mtu = l2o.imtu; session->sock = sk; |