On Thu, 2012-11-29 at 14:28 +0100, Mikel Astiz wrote: > From: Mikel Astiz <[email protected]> > > bt_transport_acquire() might get called from the main thread, in case > the IO thread hasn't been started yet. In this case, we should not call > setup_stream() since this is going to be called in the beginning of > thread_func(). > --- > src/modules/bluetooth/module-bluetooth-device.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/modules/bluetooth/module-bluetooth-device.c > b/src/modules/bluetooth/module-bluetooth-device.c > index 136c7da..d1c386f 100644 > --- a/src/modules/bluetooth/module-bluetooth-device.c > +++ b/src/modules/bluetooth/module-bluetooth-device.c > @@ -424,6 +424,10 @@ static int bt_transport_acquire(struct userdata *u, > pa_bool_t start) { > return 0; > > done: > + /* If thread is still about to start, the stream will be set up in the > beginning of thread_func() */ > + if (u->thread == NULL) > + return 0;
Otherwise fine, but isn't it random whether u->thread == NULL when bt_transport_acquire() is called in the beginning of thread_func()? It looks like a race to me. Would it be better to call setup_stream() directly in thread_func() instead of calling bt_transport_acquire()? -- Tanu _______________________________________________ pulseaudio-discuss mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
