Message ID | 20211226154017.6067-1-vr_qemu@t-online.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | misc. audio fixes | expand |
On Sonntag, 26. Dezember 2021 16:40:15 CET Volker Rümelin wrote: > On Windows the jack_set_thread_creator() function and on MacOS the > pthread_setname_np() function with a thread pointer paramater is > not available. Use #ifdefs to remove the jack_set_thread_creator() > function call and the qjack_thread_creator() function in both > cases. > > The qjack_thread_creator() function just sets the name of the > created thread for debugging purposes and isn't really necessary. As far as Windows is concerned, right, there is no jack_set_thread_creator(). I find it actually very useful to have named threads for debugging purposes, especially for processes that have a load of threads, but I see there would be no easy solution to preserve this for macOS, as on macOS pthread_setname_np() must be called from the to be named thread itself, and the thread's entry point is on JACK server side, so for now ... Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com> > From the jack_set_thread_creator() documentation: > (...) > > No normal application/client should consider calling this. (...) > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/785 > Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> > --- > audio/jackaudio.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/audio/jackaudio.c b/audio/jackaudio.c > index e7de6d5433..317009e936 100644 > --- a/audio/jackaudio.c > +++ b/audio/jackaudio.c > @@ -622,6 +622,7 @@ static void qjack_enable_in(HWVoiceIn *hw, bool enable) > ji->c.enabled = enable; > } > > +#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) > static int qjack_thread_creator(jack_native_thread_t *thread, > const pthread_attr_t *attr, void *(*function)(void *), void *arg) > { > @@ -635,6 +636,7 @@ static int qjack_thread_creator(jack_native_thread_t > *thread, > > return ret; > } > +#endif > > static void *qjack_init(Audiodev *dev) > { > @@ -687,7 +689,9 @@ static void register_audio_jack(void) > { > qemu_mutex_init(&qjack_shutdown_lock); > audio_driver_register(&jack_driver); > +#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) > jack_set_thread_creator(qjack_thread_creator); > +#endif > jack_set_error_function(qjack_error); > jack_set_info_function(qjack_info); > }
diff --git a/audio/jackaudio.c b/audio/jackaudio.c index e7de6d5433..317009e936 100644 --- a/audio/jackaudio.c +++ b/audio/jackaudio.c @@ -622,6 +622,7 @@ static void qjack_enable_in(HWVoiceIn *hw, bool enable) ji->c.enabled = enable; } +#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) static int qjack_thread_creator(jack_native_thread_t *thread, const pthread_attr_t *attr, void *(*function)(void *), void *arg) { @@ -635,6 +636,7 @@ static int qjack_thread_creator(jack_native_thread_t *thread, return ret; } +#endif static void *qjack_init(Audiodev *dev) { @@ -687,7 +689,9 @@ static void register_audio_jack(void) { qemu_mutex_init(&qjack_shutdown_lock); audio_driver_register(&jack_driver); +#if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID) jack_set_thread_creator(qjack_thread_creator); +#endif jack_set_error_function(qjack_error); jack_set_info_function(qjack_info); }
On Windows the jack_set_thread_creator() function and on MacOS the pthread_setname_np() function with a thread pointer paramater is not available. Use #ifdefs to remove the jack_set_thread_creator() function call and the qjack_thread_creator() function in both cases. The qjack_thread_creator() function just sets the name of the created thread for debugging purposes and isn't really necessary. From the jack_set_thread_creator() documentation: (...) No normal application/client should consider calling this. (...) Resolves: https://gitlab.com/qemu-project/qemu/-/issues/785 Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> --- audio/jackaudio.c | 4 ++++ 1 file changed, 4 insertions(+)