mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-06 13:29:56 -05:00
introduce three virtual sink/source names: @DEFAULT_SINK@, @DEFAULT_SOURCE@, @DEFAULT_MONITOR@. Especially the latter is useful for connecting to the monitor source of the default sink.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1158 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
fec7e9bec7
commit
0dea2237ed
1 changed files with 26 additions and 2 deletions
|
|
@ -58,7 +58,13 @@ const char *pa_namereg_register(pa_core *c, const char *name, pa_namereg_type_t
|
||||||
char *n = NULL;
|
char *n = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(c && name && data);
|
assert(c);
|
||||||
|
assert(name);
|
||||||
|
assert(data);
|
||||||
|
|
||||||
|
/* Don't allow registration of special names */
|
||||||
|
if (*name == '@')
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (!c->namereg) {
|
if (!c->namereg) {
|
||||||
c->namereg = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
|
c->namereg = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
|
||||||
|
|
@ -118,11 +124,29 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type, int a
|
||||||
assert(c);
|
assert(c);
|
||||||
|
|
||||||
if (!name) {
|
if (!name) {
|
||||||
|
|
||||||
if (type == PA_NAMEREG_SOURCE)
|
if (type == PA_NAMEREG_SOURCE)
|
||||||
name = pa_namereg_get_default_source_name(c);
|
name = pa_namereg_get_default_source_name(c);
|
||||||
else if (type == PA_NAMEREG_SINK)
|
else if (type == PA_NAMEREG_SINK)
|
||||||
name = pa_namereg_get_default_sink_name(c);
|
name = pa_namereg_get_default_sink_name(c);
|
||||||
|
|
||||||
|
} else if (strcmp(name, "@DEFAULT_SINK@") == 0) {
|
||||||
|
if (type == PA_NAMEREG_SINK)
|
||||||
|
name = pa_namereg_get_default_sink_name(c);
|
||||||
|
|
||||||
|
} else if (strcmp(name, "@DEFAULT_SOURCE@") == 0) {
|
||||||
|
if (type == PA_NAMEREG_SOURCE)
|
||||||
|
name = pa_namereg_get_default_source_name(c);
|
||||||
|
|
||||||
|
} else if (strcmp(name, "@DEFAULT_MONITOR@") == 0) {
|
||||||
|
if (type == PA_NAMEREG_SOURCE) {
|
||||||
|
pa_sink *k;
|
||||||
|
|
||||||
|
if ((k = pa_namereg_get(c, NULL, PA_NAMEREG_SINK, autoload)))
|
||||||
|
return k->monitor_source;
|
||||||
}
|
}
|
||||||
|
} else if (*name == '@')
|
||||||
|
name = NULL;
|
||||||
|
|
||||||
if (!name)
|
if (!name)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue