[pulseaudio-commits] src/modules

Tanu Kaskinen tanuk at kemper.freedesktop.org
Sat Feb 16 10:51:30 PST 2013


 src/modules/bluetooth/module-bluetooth-device.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

New commits:
commit 77b3ba514cbb00adb89bafa7f48b4430d9764355
Author: Tanu Kaskinen <tanuk at iki.fi>
Date:   Tue Feb 12 21:37:02 2013 +0200

    bluetooth: Fix thread teardown code ordering
    
    thread_mq.outq may contain some unprocessed messages, which should be
    dispatched before unreffing the sink and source. If the sink and
    source are unreffed before all messages to them have been dispatched,
    the unreffing won't free the sink and source, and that in turn will
    likely cause problems with things getting freed in a wrong order.

diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 25a2182..776bcba 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1954,6 +1954,13 @@ static void stop_thread(struct userdata *u) {
         u->rtpoll_item = NULL;
     }
 
+    if (u->rtpoll) {
+        pa_thread_mq_done(&u->thread_mq);
+
+        pa_rtpoll_free(u->rtpoll);
+        u->rtpoll = NULL;
+    }
+
     if (u->transport) {
         bt_transport_release(u);
         u->transport = NULL;
@@ -1981,13 +1988,6 @@ static void stop_thread(struct userdata *u) {
         u->source = NULL;
     }
 
-    if (u->rtpoll) {
-        pa_thread_mq_done(&u->thread_mq);
-
-        pa_rtpoll_free(u->rtpoll);
-        u->rtpoll = NULL;
-    }
-
     if (u->read_smoother) {
         pa_smoother_free(u->read_smoother);
         u->read_smoother = NULL;



More information about the pulseaudio-commits mailing list