]> code.delx.au - pulseaudio/commitdiff
change the way the default sink/source is selected
authorLennart Poettering <lennart@poettering.net>
Tue, 7 Sep 2004 14:58:42 +0000 (14:58 +0000)
committerLennart Poettering <lennart@poettering.net>
Tue, 7 Sep 2004 14:58:42 +0000 (14:58 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@183 fefdeb5f-60dc-0310-8127-8f9354f1896f

doc/todo
polyp/cli-command.c
polyp/core.c
polyp/core.h
polyp/namereg.c
polyp/namereg.h
polyp/polypaudio.pa
polyp/polyplib-stream.c
polyp/protocol-native.c

index 9ef5f9c443bc8bd535d78dad204237d561ef763f..f8a5ce8660c892dbf230c596a1f5884c9585658b 100644 (file)
--- a/doc/todo
+++ b/doc/todo
    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
index 1d2788fa535e8dd8e48d8ba13414f67e878aca93..4c4f566b15038631cd229f2ee570c283c659f2c7 100644 (file)
@@ -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;
 }
 
index 4362f0cb52216a27b9fb8d6681d1ce71aee12f4d..5d79a365012ebe8ef8a1f49ce1890ed635da0283 100644 (file)
@@ -139,3 +139,4 @@ void pa_core_check_quit(struct pa_core *c) {
         c->quit_event = NULL;
     }
 }
+
index ca37507ca9a903a5f191d01ad4c87dcf4fc810fe..ddba6a833cdd174a88030a5fb3095104a9abd1a8 100644 (file)
@@ -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
index 44a9cdc6c55ad3fe20ded3fc546966c446ebf8a2..5791a3e45b508067e2f292f6dc5c7c9047198246 100644 (file)
@@ -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;
+}
index b8db11053f308306af2c892d61f6331e46843df6..f1be39588f3867a26d7bd4f1654d9a10dbf4b0ba 100644 (file)
@@ -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
index 9e18abfd19c2cee842c4f674bec1f158d0ad6fe4..40012fd6604e0933737b837af3db8484d0391224 100755 (executable)
@@ -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
index 7170a32eb21f33d902130adc5906c90276cf774d..a66a0fc6a2dfc60d64bffdefb9f7c089bfe354f9 100644 (file)
@@ -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) {
index 3d6114cf81fdef1a7ea00770980bd1431f38dd8b..943d6b22da31e438d1c427cf6e6c74eae1df9d98 100644 (file)
@@ -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);
 }