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;