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 {