From 432f464297fa146793bdb307024cd102ca0672e5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 1 Feb 2022 16:35:16 +0100 Subject: [PATCH] conf: implement match rules with conf_section_for_each --- pipewire-jack/src/pipewire-jack.c | 23 ++++++++++++++-------- src/modules/module-protocol-pulse/quirks.c | 18 ++++++++++------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index 192b0d1b6..e09620cf1 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -3093,6 +3093,19 @@ static int execute_match(void *data, const char *action, const char *val, int le return 1; } +static int apply_jack_rules(void *data, const char *location, const char *section, + const char *str, size_t len) +{ + struct client *client = data; + const struct pw_properties *p = + pw_context_get_properties(client->context.context); + + if (p != NULL) + pw_jack_match_rules(str, len, &p->dict, execute_match, client); + + return 0; +} + SPA_EXPORT jack_client_t * jack_client_open (const char *client_name, jack_options_t options, @@ -3157,14 +3170,8 @@ jack_client_t * jack_client_open (const char *client_name, pw_properties_update_string(client->props, str, strlen(str)); - if ((str = pw_context_get_conf_section(client->context.context, - "jack.rules")) != NULL) { - const struct pw_properties *p = - pw_context_get_properties(client->context.context); - if (p != NULL) - pw_jack_match_rules(str, strlen(str), &p->dict, - execute_match, client); - } + pw_context_conf_section_for_each(client->context.context, "jack.rules", + apply_jack_rules, client); client->show_monitor = pw_properties_get_bool(client->props, "jack.show-monitor", true); client->merge_monitor = pw_properties_get_bool(client->props, "jack.merge-monitor", false); diff --git a/src/modules/module-protocol-pulse/quirks.c b/src/modules/module-protocol-pulse/quirks.c index 351ed094e..e20925edc 100644 --- a/src/modules/module-protocol-pulse/quirks.c +++ b/src/modules/module-protocol-pulse/quirks.c @@ -170,15 +170,19 @@ static int client_rule_matched(void *data, const char *action, const char *val, return 0; } +static int apply_pulse_rules(void *data, const char *location, const char *section, + const char *str, size_t len) +{ + struct client *client = data; + pw_conf_match_rules(str, len, &client->props->dict, + client_rule_matched, client); + return 0; +} + int client_update_quirks(struct client *client) { struct impl *impl = client->impl; struct pw_context *context = impl->context; - const char *rules; - - if ((rules = pw_context_get_conf_section(context, "pulse.rules")) == NULL) - return 0; - - return pw_conf_match_rules(rules, strlen(rules), &client->props->dict, - client_rule_matched, client); + return pw_context_conf_section_for_each(context, "pulse.rules", + apply_pulse_rules, client); }