summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-09-07 14:58:42 +0000
committerLennart Poettering <lennart@poettering.net>2004-09-07 14:58:42 +0000
commit93c8fe6577b59176ed6a54a1ae98f8749f122dc8 (patch)
tree7d3864484d318a41024c3cfa9af0b158bc24f6c3
parent0fa499db56dc9111ddd866080606cb8b0379280e (diff)
change the way the default sink/source is selected
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@183 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--doc/todo3
-rw-r--r--polyp/cli-command.c24
-rw-r--r--polyp/core.c1
-rw-r--r--polyp/core.h1
-rw-r--r--polyp/namereg.c69
-rw-r--r--polyp/namereg.h5
-rwxr-xr-xpolyp/polypaudio.pa2
-rw-r--r--polyp/polyplib-stream.c2
-rw-r--r--polyp/protocol-native.c8
9 files changed, 84 insertions, 31 deletions
diff --git a/doc/todo b/doc/todo
index 9ef5f9c4..f8a5ce86 100644
--- a/doc/todo
+++ b/doc/todo
@@ -10,11 +10,12 @@
autoload management
- more complete pactl
- add sample directory
-- add timing parameter to write callback of stream in client API
- config file for command line arguments
+
- add FAQ
- pa_context_connect_spawn(): change function to fork+exec+waitpid-like function
- on delete event in paman
+- add feature to dump config file
** later ***
- xmlrpc/http
diff --git a/polyp/cli-command.c b/polyp/cli-command.c
index 1d2788fa..4c4f566b 100644
--- a/polyp/cli-command.c
+++ b/polyp/cli-command.c
@@ -210,8 +210,30 @@ static int pa_cli_command_source_outputs(struct pa_core *c, struct pa_tokenizer
}
static int pa_cli_command_stat(struct pa_core *c, struct pa_tokenizer *t, struct pa_strbuf *buf, int *fail, int *verbose) {
+ char s[256];
assert(c && t);
- pa_strbuf_printf(buf, "Memory blocks currently allocated: %u, size: %u bytes.\nMemory blocks allocated during the whole lifetime: %u, size: %u bytes.\n", c->memblock_stat->total, c->memblock_stat->total_size, c->memblock_stat->allocated, c->memblock_stat->allocated_size);
+
+ pa_bytes_snprint(s, sizeof(s), c->memblock_stat->total_size);
+ pa_strbuf_printf(buf, "Memory blocks currently allocated: %u, size: %s.\n",
+ c->memblock_stat->total,
+ s);
+
+ pa_bytes_snprint(s, sizeof(s), c->memblock_stat->allocated_size);
+ pa_strbuf_printf(buf, "Memory blocks allocated during the whole lifetime: %u, size: %s.\n",
+ c->memblock_stat->allocated,
+ s);
+
+ pa_bytes_snprint(s, sizeof(s), pa_scache_total_size(c));
+ pa_strbuf_printf(buf, "Total sample cache size: %s.\n", s);
+
+ pa_sample_spec_snprint(s, sizeof(s), &c->default_sample_spec);
+ pa_strbuf_printf(buf, "Default sample spec: %s\n", s);
+
+ pa_strbuf_printf(buf, "Default sink name: %s\n"
+ "Default source name: %s\n",
+ pa_namereg_get_default_sink_name(c),
+ pa_namereg_get_default_source_name(c));
+
return 0;
}
diff --git a/polyp/core.c b/polyp/core.c
index 4362f0cb..5d79a365 100644
--- a/polyp/core.c
+++ b/polyp/core.c
@@ -139,3 +139,4 @@ void pa_core_check_quit(struct pa_core *c) {
c->quit_event = NULL;
}
}
+
diff --git a/polyp/core.h b/polyp/core.h
index ca37507c..ddba6a83 100644
--- a/polyp/core.h
+++ b/polyp/core.h
@@ -55,7 +55,6 @@ struct pa_core {
struct pa_core* pa_core_new(struct pa_mainloop_api *m);
void pa_core_free(struct pa_core*c);
-
void pa_core_check_quit(struct pa_core *c);
#endif
diff --git a/polyp/namereg.c b/polyp/namereg.c
index 44a9cdc6..5791a3e4 100644
--- a/polyp/namereg.c
+++ b/polyp/namereg.c
@@ -122,30 +122,10 @@ void* pa_namereg_get(struct pa_core *c, const char *name, enum pa_namereg_type t
assert(c);
if (!name) {
- if (type == PA_NAMEREG_SOURCE) {
- if (!c->default_source_name) {
- struct pa_source *s;
-
- for (s = pa_idxset_first(c->sources, &index); s; s = pa_idxset_next(c->sources, &index))
- if (!s->monitor_of) {
- pa_namereg_set_default(c, s->name, PA_NAMEREG_SOURCE);
- break;
- }
- }
-
- name = c->default_source_name;
-
- } else if (type == PA_NAMEREG_SINK) {
-
- if (!c->default_sink_name) {
- struct pa_sink *s;
-
- if ((s = pa_idxset_first(c->sinks, NULL)))
- pa_namereg_set_default(c, s->name, PA_NAMEREG_SINK);
- }
-
- name = c->default_sink_name;
- }
+ if (type == PA_NAMEREG_SOURCE)
+ name = pa_namereg_get_default_source_name(c);
+ else if (type == PA_NAMEREG_SINK)
+ name = pa_namereg_get_default_sink_name(c);
}
if (!name)
@@ -197,3 +177,44 @@ void pa_namereg_set_default(struct pa_core*c, const char *name, enum pa_namereg_
*s = pa_xstrdup(name);
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX);
}
+
+const char *pa_namereg_get_default_sink_name(struct pa_core *c) {
+ struct pa_sink *s;
+ assert(c);
+
+ if (c->default_sink_name)
+ return c->default_sink_name;
+
+ if ((s = pa_idxset_first(c->sinks, NULL)))
+ pa_namereg_set_default(c, s->name, PA_NAMEREG_SINK);
+
+ if (c->default_sink_name)
+ return c->default_sink_name;
+
+ return NULL;
+}
+
+const char *pa_namereg_get_default_source_name(struct pa_core *c) {
+ struct pa_source *s;
+ uint32_t index;
+
+ assert(c);
+
+ if (c->default_source_name)
+ return c->default_source_name;
+
+ for (s = pa_idxset_first(c->sources, &index); s; s = pa_idxset_next(c->sources, &index))
+ if (!s->monitor_of) {
+ pa_namereg_set_default(c, s->name, PA_NAMEREG_SOURCE);
+ break;
+ }
+
+ if (!c->default_source_name)
+ if ((s = pa_idxset_first(c->sources, NULL)))
+ pa_namereg_set_default(c, s->name, PA_NAMEREG_SOURCE);
+
+ if (c->default_source_name)
+ return c->default_source_name;
+
+ return NULL;
+}
diff --git a/polyp/namereg.h b/polyp/namereg.h
index b8db1105..f1be3958 100644
--- a/polyp/namereg.h
+++ b/polyp/namereg.h
@@ -37,4 +37,9 @@ void pa_namereg_unregister(struct pa_core *c, const char *name);
void* pa_namereg_get(struct pa_core *c, const char *name, enum pa_namereg_type type, int autoload);
void pa_namereg_set_default(struct pa_core*c, const char *name, enum pa_namereg_type type);
+
+const char *pa_namereg_get_default_sink_name(struct pa_core *c);
+const char *pa_namereg_get_default_source_name(struct pa_core *c);
+
+
#endif
diff --git a/polyp/polypaudio.pa b/polyp/polypaudio.pa
index 9e18abfd..40012fd6 100755
--- a/polyp/polypaudio.pa
+++ b/polyp/polypaudio.pa
@@ -21,7 +21,7 @@
# Load audio drivers statically
#load module-alsa-sink
-#load module-alsa-source device=plughw:1,0
+load module-alsa-source device=plughw:1,0
load module-oss device="/dev/dsp" sink_name=output source_name=input record=0
#load module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load module-pipe-sink
diff --git a/polyp/polyplib-stream.c b/polyp/polyplib-stream.c
index 7170a32e..a66a0fc6 100644
--- a/polyp/polyplib-stream.c
+++ b/polyp/polyplib-stream.c
@@ -239,7 +239,7 @@ static void create_stream(struct pa_stream *s, const char *dev, const struct pa_
pa_tagstruct_putu32(t, tag = s->context->ctag++);
pa_tagstruct_puts(t, s->name);
pa_tagstruct_put_sample_spec(t, &s->sample_spec);
- pa_tagstruct_putu32(t, (uint32_t) -1);
+ pa_tagstruct_putu32(t, PA_INVALID_INDEX);
pa_tagstruct_puts(t, dev ? dev : "");
pa_tagstruct_putu32(t, s->buffer_attr.maxlength);
if (s->direction == PA_STREAM_PLAYBACK) {
diff --git a/polyp/protocol-native.c b/polyp/protocol-native.c
index 3d6114cf..943d6b22 100644
--- a/polyp/protocol-native.c
+++ b/polyp/protocol-native.c
@@ -1203,6 +1203,7 @@ static void command_get_server_info(struct pa_pdispatch *pd, uint32_t command, u
struct connection *c = userdata;
struct pa_tagstruct *reply;
char txt[256];
+ const char *n;
assert(c && t);
if (!pa_tagstruct_eof(t)) {
@@ -1224,8 +1225,11 @@ static void command_get_server_info(struct pa_pdispatch *pd, uint32_t command, u
pa_tagstruct_puts(reply, pa_get_user_name(txt, sizeof(txt)));
pa_tagstruct_puts(reply, pa_get_host_name(txt, sizeof(txt)));
pa_tagstruct_put_sample_spec(reply, &c->protocol->core->default_sample_spec);
- pa_tagstruct_puts(reply, c->protocol->core->default_sink_name ? c->protocol->core->default_sink_name : "");
- pa_tagstruct_puts(reply, c->protocol->core->default_source_name ? c->protocol->core->default_source_name : "");
+
+ n = pa_namereg_get_default_sink_name(c->protocol->core);
+ pa_tagstruct_puts(reply, n ? n : "");
+ n = pa_namereg_get_default_source_name(c->protocol->core);
+ pa_tagstruct_puts(reply, n ? n : "");
pa_pstream_send_tagstruct(c->pstream, reply);
}