From 3b89e6f3690fab48f5011d2989978ee03b5ce9b2 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sat, 10 Sep 2022 20:55:05 +0300 Subject: [PATCH] alsa-seq: add an option to disable longname in MIDI ports Untested yet Signed-off-by: Dmitry Sharshakov --- spa/include/spa/utils/keys.h | 2 ++ spa/plugins/alsa/alsa-seq-bridge.c | 9 ++++++--- spa/plugins/alsa/alsa-seq.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/spa/include/spa/utils/keys.h b/spa/include/spa/utils/keys.h index 80d578fc0..8a2003abf 100644 --- a/spa/include/spa/utils/keys.h +++ b/spa/include/spa/utils/keys.h @@ -62,6 +62,8 @@ extern "C" { #define SPA_KEY_API_ALSA_USE_UCM "api.alsa.use-ucm" /**< if UCM should be used */ #define SPA_KEY_API_ALSA_IGNORE_DB "api.alsa.ignore-dB" /**< if decibel info should be ignored */ #define SPA_KEY_API_ALSA_OPEN_UCM "api.alsa.open.ucm" /**< if UCM should be opened card */ +#define SPA_KEY_API_ALSA_DISABLE_LONGNAME \ + "api.alsa.disable-longname" /**< if card long name should not be passed to MIDI port */ /** info from alsa card_info */ #define SPA_KEY_API_ALSA_CARD_ID "api.alsa.card.id" /**< id from card_info */ diff --git a/spa/plugins/alsa/alsa-seq-bridge.c b/spa/plugins/alsa/alsa-seq-bridge.c index 213ac8d2f..bf2930147 100644 --- a/spa/plugins/alsa/alsa-seq-bridge.c +++ b/spa/plugins/alsa/alsa-seq-bridge.c @@ -48,6 +48,7 @@ static void reset_props(struct props *props) { strncpy(props->device, DEFAULT_DEVICE, sizeof(props->device)); strncpy(props->clock_name, DEFAULT_CLOCK_NAME, sizeof(props->clock_name)); + props->disable_longname = 0; } static int impl_node_enum_params(void *object, int seq, @@ -261,10 +262,10 @@ static void emit_port_info(struct seq_state *this, struct seq_port *port, bool f snd_seq_get_any_client_info(this->sys.hndl, port->addr.client, client_info); - int card_id = snd_seq_client_info_get_card(client_info); + int card_id; - // Failed to obtain card number (software device) - if (card_id < 0) { + // Failed to obtain card number (software device) or disabled + if (this->props.disable_longname || (card_id = snd_seq_client_info_get_card(client_info)) < 0) { snprintf(name, sizeof(name), "%s:(%s_%d) %s", snd_seq_client_info_get_name(client_info), port->direction == SPA_DIRECTION_OUTPUT ? "capture" : "playback", @@ -950,6 +951,8 @@ impl_init(const struct spa_handle_factory *factory, } else if (spa_streq(k, "clock.name")) { spa_scnprintf(this->props.clock_name, sizeof(this->props.clock_name), "%s", s); + } else if (spa_streq(k, SPA_KEY_API_ALSA_DISABLE_LONGNAME)) { + this->props.disable_longname = spa_atob(s); } } diff --git a/spa/plugins/alsa/alsa-seq.h b/spa/plugins/alsa/alsa-seq.h index 91f763e24..5d5ed5137 100644 --- a/spa/plugins/alsa/alsa-seq.h +++ b/spa/plugins/alsa/alsa-seq.h @@ -52,6 +52,7 @@ extern "C" { struct props { char device[64]; char clock_name[64]; + bool disable_longname; }; #define MAX_EVENT_SIZE 1024