From 310ed89aad18cf216945b8e1bf1add6b815ac298 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 14 Sep 2020 13:21:10 +0200 Subject: [PATCH] context: match wildcards @DEFAULT_SINK/SOURCE/MONITOR@ See #291 --- pipewire-pulseaudio/src/context.c | 9 ++++++++- pipewire-pulseaudio/src/introspect.c | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pipewire-pulseaudio/src/context.c b/pipewire-pulseaudio/src/context.c index 947c8ab28..c2409e731 100644 --- a/pipewire-pulseaudio/src/context.c +++ b/pipewire-pulseaudio/src/context.c @@ -180,7 +180,14 @@ struct global *pa_context_find_global_by_name(pa_context *c, uint32_t mask, cons { struct global *g; const char *str; - uint32_t id = atoi(name); + uint32_t id; + + if (strcmp(name, "@DEFAULT_SINK@") == 0 || strcmp("@DEFAULT_MONITOR@", name) == 0) + id = c->default_sink; + else if (strcmp(name, "@DEFAULT_SOURCE@") == 0) + id = c->default_sink; + else + id = atoi(name); spa_list_for_each(g, &c->globals, link) { if ((g->mask & mask) == 0) diff --git a/pipewire-pulseaudio/src/introspect.c b/pipewire-pulseaudio/src/introspect.c index 2c3aea589..02af3fd6f 100644 --- a/pipewire-pulseaudio/src/introspect.c +++ b/pipewire-pulseaudio/src/introspect.c @@ -202,6 +202,8 @@ static void sink_info(pa_operation *o, void *userdata) pa_context *c = o->context; int error = 0; + pw_log_debug("%p name:%s idx:%u", c, d->name, d->idx); + if (d->name) { g = pa_context_find_global_by_name(c, PA_SUBSCRIPTION_MASK_SINK, d->name); pa_xfree(d->name); @@ -211,8 +213,6 @@ static void sink_info(pa_operation *o, void *userdata) g = NULL; } - pw_log_debug("%p", c); - if (g) { error = sink_callback(c, g, d); } else {