[pulseaudio-discuss] [RFC next v4 11/16] bluetooth: Support transport auto-release

Mikel Astiz mikel.astiz.oss at gmail.com
Mon Apr 29 09:28:08 PDT 2013


From: Mikel Astiz <mikel.astiz at bmw-carit.de>

With BlueZ 5, if the remote device suspends the audio, the transport
state will change to "idle" and the endpoint is not required to release
the transport, since this could introduce race conditions. Therefore,
ignore the call to pa_bluetooth_transport_release() if the transport is
not acquired any more.
---
 src/modules/bluetooth/bluetooth-util.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 8554d5d..e3de01e 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -1532,6 +1532,9 @@ void pa_bluetooth_transport_release(pa_bluetooth_transport *t) {
 
         pa_assert_se(m = dbus_message_new_method_call(t->owner, t->path, "org.bluez.MediaTransport", "Release"));
         pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_STRING, &accesstype, DBUS_TYPE_INVALID));
+    } else if (t->state <= PA_BLUETOOTH_TRANSPORT_STATE_IDLE) {
+        pa_log_info("Transport %s auto-released by BlueZ or already released", t->path);
+        return;
     } else {
         pa_assert(t->device->discovery->version == BLUEZ_VERSION_5);
         pa_assert_se(m = dbus_message_new_method_call(t->owner, t->path, "org.bluez.MediaTransport1", "Release"));
-- 
1.8.1.4



More information about the pulseaudio-discuss mailing list