From 1a9a4076a2548dda75daa67db0b4f71821a98091 Mon Sep 17 00:00:00 2001 From: Jarkko Suontausta Date: Tue, 22 May 2012 15:58:33 +0300 Subject: [PATCH] bluetooth: Release transport when the pa_rtpoll_run loop finishes. Based on a patch by Marko Ollonen. --- src/modules/bluetooth/module-bluetooth-device.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index 0b12cc7..68c4efc 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -1731,11 +1731,18 @@ static void thread_func(void *userdata) { pollfd->events = (short) (((u->sink && PA_SINK_IS_LINKED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) | (u->source && PA_SOURCE_IS_LINKED(u->source->thread_info.state) ? POLLIN : 0)); - if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0) + if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0) { + pa_log_debug("pa_rtpoll_run failed with: %d", ret); goto fail; - - if (ret == 0) + } + if (ret == 0) { + pa_log_debug("IO thread shutdown requested, stopping cleanly"); + if (u->transport) + bt_transport_release(u); + else + stop_stream_fd(u); goto finish; + } pollfd = u->rtpoll_item ? pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL) : NULL; -- 2.7.4