From 25f36e433461342429478118530067d3d609b6cb Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Sat, 19 Nov 2022 12:59:34 +0200 Subject: [PATCH] bluez5: add info key indicating glib mainloop is usable --- spa/include/spa/utils/keys.h | 4 ++++ spa/plugins/bluez5/midi-enum.c | 6 ++++++ spa/plugins/bluez5/midi-node.c | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/spa/include/spa/utils/keys.h b/spa/include/spa/utils/keys.h index df283b9b8..d7b3e294b 100644 --- a/spa/include/spa/utils/keys.h +++ b/spa/include/spa/utils/keys.h @@ -136,6 +136,10 @@ extern "C" { #define SPA_KEY_API_JACK_SERVER "api.jack.server" /**< a jack server name */ #define SPA_KEY_API_JACK_CLIENT "api.jack.client" /**< an internal jack client */ +/** keys for glib api */ +#define SPA_KEY_API_GLIB_MAINLOOP "api.glib.mainloop" /**< whether glib mainloop runs + * in same thread as PW loop */ + /** * \} */ diff --git a/spa/plugins/bluez5/midi-enum.c b/spa/plugins/bluez5/midi-enum.c index 1af2b2226..a966591c7 100644 --- a/spa/plugins/bluez5/midi-enum.c +++ b/spa/plugins/bluez5/midi-enum.c @@ -807,6 +807,12 @@ impl_init(const struct spa_handle_factory *factory, spa_log_topic_init(this->log, &log_topic); + if (!(info && spa_atob(spa_dict_lookup(info, SPA_KEY_API_GLIB_MAINLOOP)))) { + spa_log_error(this->log, "Glib mainloop is not usable: %s not set", + SPA_KEY_API_GLIB_MAINLOOP); + return -EINVAL; + } + spa_hook_list_init(&this->hooks); this->device.iface = SPA_INTERFACE_INIT( diff --git a/spa/plugins/bluez5/midi-node.c b/spa/plugins/bluez5/midi-node.c index e764178c2..12b8dbf19 100644 --- a/spa/plugins/bluez5/midi-node.c +++ b/spa/plugins/bluez5/midi-node.c @@ -1953,6 +1953,12 @@ impl_init(const struct spa_handle_factory *factory, spa_log_topic_init(this->log, &log_topic); + if (!(info && spa_atob(spa_dict_lookup(info, SPA_KEY_API_GLIB_MAINLOOP)))) { + spa_log_error(this->log, "Glib mainloop is not usable: %s not set", + SPA_KEY_API_GLIB_MAINLOOP); + return -EINVAL; + } + if (this->data_loop == NULL) { spa_log_error(this->log, "a data loop is needed"); return -EINVAL;