summaryrefslogtreecommitdiffstats
path: root/src/sink.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-06-27 22:42:17 +0000
committerLennart Poettering <lennart@poettering.net>2004-06-27 22:42:17 +0000
commita74cd2a1bd92eac6a4140d0794ac4b557be6c133 (patch)
treefdb341d0c7fecdbafc8f42cdc612076ebb23e024 /src/sink.c
parent010378643e89e2ca4ea3502cb7dc6d8e16480832 (diff)
add name registrar
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@39 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/sink.c')
-rw-r--r--src/sink.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/sink.c b/src/sink.c
index a334424c..5ab1a7a7 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -7,10 +7,11 @@
#include "sinkinput.h"
#include "strbuf.h"
#include "sample-util.h"
+#include "namereg.h"
#define MAX_MIX_CHANNELS 32
-struct sink* sink_new(struct core *core, const char *name, const struct pa_sample_spec *spec) {
+struct sink* sink_new(struct core *core, const char *name, int fail, const struct pa_sample_spec *spec) {
struct sink *s;
char *n = NULL;
int r;
@@ -18,8 +19,13 @@ struct sink* sink_new(struct core *core, const char *name, const struct pa_sampl
s = malloc(sizeof(struct sink));
assert(s);
+
+ if (!(name = namereg_register(core, name, NAMEREG_SINK, s, fail))) {
+ free(s);
+ return NULL;
+ }
- s->name = name ? strdup(name) : NULL;
+ s->name = strdup(name);
s->core = core;
s->sample_spec = *spec;
s->inputs = idxset_new(NULL, NULL);
@@ -29,7 +35,8 @@ struct sink* sink_new(struct core *core, const char *name, const struct pa_sampl
sprintf(n, "%s_monitor", name);
}
- s->monitor_source = source_new(core, n, spec);
+ s->monitor_source = source_new(core, n, 0, spec);
+ assert(s->monitor_source);
free(n);
s->volume = 0xFF;
@@ -50,6 +57,8 @@ void sink_free(struct sink *s) {
struct sink_input *i, *j = NULL;
assert(s);
+ namereg_unregister(s->core, s->name);
+
while ((i = idxset_first(s->inputs, NULL))) {
assert(i != j);
sink_input_kill(i);