From 27afa421cfdafbfcf77df3a41e87d9eaca7952fd Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 4 May 2017 11:22:36 +0300 Subject: [PATCH] handsfree-audio: Add Acquire implementation This adds Acquire method which can be used by agents that require pulling the fd directly instead of waiting a NewConnection. --- src/handsfree-audio.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/handsfree-audio.c b/src/handsfree-audio.c index dab16da2..5ca87021 100644 --- a/src/handsfree-audio.c +++ b/src/handsfree-audio.c @@ -326,6 +326,13 @@ static gboolean sco_connect_cb(GIOChannel *io, GIOCondition cond, sk = g_io_channel_unix_get_fd(io); + if (card->msg && dbus_message_has_member(card->msg, "Acquire")) { + reply = g_dbus_create_reply(card->msg, DBUS_TYPE_UNIX_FD, &sk, + DBUS_TYPE_BYTE, &card->selected_codec, + DBUS_TYPE_INVALID); + goto done; + } + send_new_connection(card->path, sk, card->selected_codec); close(sk); @@ -403,6 +410,9 @@ static const GDBusMethodTable card_methods[] = { NULL, GDBUS_ARGS({ "properties", "a{sv}" }), card_get_properties) }, { GDBUS_ASYNC_METHOD("Connect", NULL, NULL, card_connect) }, + { GDBUS_ASYNC_METHOD("Acquire", NULL, + GDBUS_ARGS({"sco", "h"}, {"codec", "y"}), + card_connect) }, { } };