summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/modules/module-match.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index 5c36fe0d..8c825c4f 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -48,7 +48,8 @@ PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("Playback stream expression matching module");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
-PA_MODULE_USAGE("table=<filename>");
+PA_MODULE_USAGE("table=<filename> "
+ "key=<property_key>");
#define WHITESPACE "\n\r \t"
@@ -57,6 +58,7 @@ PA_MODULE_USAGE("table=<filename>");
static const char* const valid_modargs[] = {
"table",
+ "key",
NULL,
};
@@ -69,6 +71,7 @@ struct rule {
struct userdata {
struct rule *rules;
+ char *property_key;
pa_subscription *subscription;
};
@@ -199,7 +202,7 @@ static void callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, v
if (!(si = pa_idxset_get_by_index(c->sink_inputs, idx)))
return;
- if (!(n = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME)))
+ if (!(n = pa_proplist_gets(si->proplist, u->property_key)))
return;
pa_log_debug("Matching with %s", n);
@@ -230,11 +233,14 @@ int pa__init(pa_module*m) {
goto fail;
}
+
u = pa_xnew(struct userdata, 1);
u->rules = NULL;
u->subscription = NULL;
m->userdata = u;
+ u->property_key = pa_xstrdup(pa_modargs_get_value(ma, "key", PA_PROP_MEDIA_NAME));
+
if (load_rules(u, pa_modargs_get_value(ma, "table", NULL)) < 0)
goto fail;
@@ -263,6 +269,9 @@ void pa__done(pa_module*m) {
if (u->subscription)
pa_subscription_free(u->subscription);
+ if (u->property_key)
+ pa_xfree(u->property_key);
+
for (r = u->rules; r; r = n) {
n = r->next;