diff options
Diffstat (limited to 'src/pulsecore')
-rw-r--r-- | src/pulsecore/cli-command.c | 8 | ||||
-rw-r--r-- | src/pulsecore/protocol-native.c | 28 |
2 files changed, 25 insertions, 11 deletions
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c index ae75064f0..1a49677be 100644 --- a/src/pulsecore/cli-command.c +++ b/src/pulsecore/cli-command.c @@ -1038,7 +1038,9 @@ static int pa_cli_command_sink_default(pa_core *c, pa_tokenizer *t, pa_strbuf *b return -1; } - if ((s = pa_namereg_get(c, n, PA_NAMEREG_SINK))) + if (pa_streq(n, "@NONE@")) + pa_core_set_configured_default_sink(c, NULL); + else if ((s = pa_namereg_get(c, n, PA_NAMEREG_SINK))) pa_core_set_configured_default_sink(c, s->name); else pa_strbuf_printf(buf, "Sink %s does not exist.\n", n); @@ -1060,7 +1062,9 @@ static int pa_cli_command_source_default(pa_core *c, pa_tokenizer *t, pa_strbuf return -1; } - if ((s = pa_namereg_get(c, n, PA_NAMEREG_SOURCE))) + if (pa_streq(n, "@NONE@")) + pa_core_set_configured_default_source(c, NULL); + else if ((s = pa_namereg_get(c, n, PA_NAMEREG_SOURCE))) pa_core_set_configured_default_source(c, s->name); else pa_strbuf_printf(buf, "Source %s does not exist.\n", n); diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index 98b8795d9..231d640aa 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -4379,23 +4379,33 @@ static void command_set_default_sink_or_source(pa_pdispatch *pd, uint32_t comman } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !s || pa_namereg_is_valid_name(s), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !s || pa_namereg_is_valid_name(s) || pa_safe_streq(s,"@NONE@"), tag, PA_ERR_INVALID); if (command == PA_COMMAND_SET_DEFAULT_SOURCE) { - pa_source *source; + char *source_name = NULL; - source = pa_namereg_get(c->protocol->core, s, PA_NAMEREG_SOURCE); - CHECK_VALIDITY(c->pstream, source, tag, PA_ERR_NOENTITY); + if (!pa_safe_streq(s,"@NONE@")) { + pa_source *source; + + source = pa_namereg_get(c->protocol->core, s, PA_NAMEREG_SOURCE); + CHECK_VALIDITY(c->pstream, source, tag, PA_ERR_NOENTITY); + source_name = source->name; + } - pa_core_set_configured_default_source(c->protocol->core, source->name); + pa_core_set_configured_default_source(c->protocol->core, source_name); } else { - pa_sink *sink; + char *sink_name = NULL; pa_assert(command == PA_COMMAND_SET_DEFAULT_SINK); - sink = pa_namereg_get(c->protocol->core, s, PA_NAMEREG_SINK); - CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY); + if (!pa_safe_streq(s,"@NONE@")) { + pa_sink *sink; + + sink = pa_namereg_get(c->protocol->core, s, PA_NAMEREG_SINK); + CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY); + sink_name = sink->name; + } - pa_core_set_configured_default_sink(c->protocol->core, sink->name); + pa_core_set_configured_default_sink(c->protocol->core, sink_name); } pa_pstream_send_simple_ack(c->pstream, tag); |