summaryrefslogtreecommitdiff
path: root/android/avrcp.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-02-05 12:26:58 +0200
committerSzymon Janc <szymon.janc@tieto.com>2014-02-05 14:44:20 +0100
commit65cfccf1b10fed9ee5e3c807ccd4663f3f778f01 (patch)
tree99809de5f43d13d135b623f32c456bc4f8892219 /android/avrcp.c
parentd0d30cace489348d12755540ae9308222db97eb5 (diff)
downloadbluez-65cfccf1b10fed9ee5e3c807ccd4663f3f778f01.tar.gz
android/AVRCP: Add bt_avrcp_disconnect
This adds bt_avrcp_disconnect function which can be used to disconnect AVRCP sessions.
Diffstat (limited to 'android/avrcp.c')
-rw-r--r--android/avrcp.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/android/avrcp.c b/android/avrcp.c
index 8600d9885..f61ed341c 100644
--- a/android/avrcp.c
+++ b/android/avrcp.c
@@ -135,6 +135,11 @@ static void avrcp_device_free(void *data)
if (dev->session)
avctp_shutdown(dev->session);
+ if (dev->io) {
+ g_io_channel_shutdown(dev->io, FALSE, NULL);
+ g_io_channel_unref(dev->io);
+ }
+
devices = g_slist_remove(devices, dev);
g_free(dev);
}
@@ -338,3 +343,24 @@ void bt_avrcp_connect(const bdaddr_t *dst)
ba2str(&dev->dst, addr);
DBG("connecting to %s", addr);
}
+
+void bt_avrcp_disconnect(const bdaddr_t *dst)
+{
+ struct avrcp_device *dev;
+ GSList *l;
+
+ DBG("");
+
+ l = g_slist_find_custom(devices, dst, device_cmp);
+ if (!l)
+ return;
+
+ dev = l->data;
+
+ if (dev->session) {
+ avctp_shutdown(dev->session);
+ return;
+ }
+
+ avrcp_device_free(dev);
+}