[pulseaudio-discuss] [PATCH 12/13] bluetooth: Fix thread teardown code ordering
Tanu Kaskinen
tanuk at iki.fi
Sat Feb 16 10:48:09 PST 2013
On Wed, 2013-02-13 at 08:40 +0100, Mikel Astiz wrote:
> Hi Tanu,
>
> On Tue, Feb 12, 2013 at 8:37 PM, Tanu Kaskinen <tanuk at iki.fi> wrote:
> > 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.
> > ---
> > src/modules/bluetooth/module-bluetooth-device.c | 14 +++++++-------
> > 1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
> > index f6f6da6..06fe0be 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;
> > --
> > 1.7.10.4
>
> This one looks good to me.
Ok, I'll push this. Thanks for checking!
--
Tanu
More information about the pulseaudio-discuss
mailing list