From bf79e9759112abfa7be5d01de807b24a68038d26 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 12 Aug 2006 16:26:59 +0000 Subject: generate default sink/source names from the device files they belong to git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1223 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-alsa-sink.c | 16 ++++++++++++++-- src/modules/module-alsa-source.c | 17 ++++++++++++++--- src/modules/module-oss.c | 32 ++++++++++++++++++++++++++++---- 3 files changed, 56 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/modules/module-alsa-sink.c b/src/modules/module-alsa-sink.c index efecfc21..e14cc5c8 100644 --- a/src/modules/module-alsa-sink.c +++ b/src/modules/module-alsa-sink.c @@ -87,7 +87,6 @@ static const char* const valid_modargs[] = { NULL }; -#define DEFAULT_SINK_NAME "alsa_output" #define DEFAULT_DEVICE "default" static void update_usage(struct userdata *u) { @@ -367,6 +366,9 @@ int pa__init(pa_core *c, pa_module*m) { snd_pcm_info_t *pcm_info = NULL; int err; char *t; + const char *name; + char *name_buf = NULL; + int namereg_fail; if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { pa_log(__FILE__": failed to parse module arguments"); @@ -427,7 +429,14 @@ int pa__init(pa_core *c, pa_module*m) { u->mixer_handle = NULL; } - if (!(u->sink = pa_sink_new(c, __FILE__, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME), 0, &ss, &map))) { + if ((name = pa_modargs_get_value(ma, "sink_name", NULL))) + namereg_fail = 1; + else { + name = name_buf = pa_sprintf_malloc("alsa_output.%s", dev); + namereg_fail = 0; + } + + if (!(u->sink = pa_sink_new(c, __FILE__, name, namereg_fail, &ss, &map))) { pa_log(__FILE__": Failed to create sink object"); goto fail; } @@ -502,6 +511,9 @@ int pa__init(pa_core *c, pa_module*m) { u->sink->get_hw_mute(u->sink); finish: + + pa_xfree(name_buf); + if (ma) pa_modargs_free(ma); diff --git a/src/modules/module-alsa-source.c b/src/modules/module-alsa-source.c index 6149224a..b4ef09d9 100644 --- a/src/modules/module-alsa-source.c +++ b/src/modules/module-alsa-source.c @@ -88,7 +88,6 @@ static const char* const valid_modargs[] = { NULL }; -#define DEFAULT_SOURCE_NAME "alsa_input" #define DEFAULT_DEVICE "default" static void update_usage(struct userdata *u) { @@ -360,6 +359,9 @@ int pa__init(pa_core *c, pa_module*m) { snd_pcm_info_t *pcm_info = NULL; int err; char *t; + const char *name; + char *name_buf = NULL; + int namereg_fail; if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { pa_log(__FILE__": failed to parse module arguments"); @@ -420,7 +422,14 @@ int pa__init(pa_core *c, pa_module*m) { u->mixer_handle = NULL; } - if (!(u->source = pa_source_new(c, __FILE__, pa_modargs_get_value(ma, "source_name", DEFAULT_SOURCE_NAME), 0, &ss, &map))) { + if ((name = pa_modargs_get_value(ma, "source_name", NULL))) + namereg_fail = 1; + else { + name = name_buf = pa_sprintf_malloc("alsa_input.%s", dev); + namereg_fail = 0; + } + + if (!(u->source = pa_source_new(c, __FILE__, name, namereg_fail, &ss, &map))) { pa_log(__FILE__": Failed to create source object"); goto fail; } @@ -492,7 +501,9 @@ int pa__init(pa_core *c, pa_module*m) { u->source->get_hw_mute(u->source); finish: - if (ma) + pa_xfree(name_buf); + + if (ma) pa_modargs_free(ma); if (pcm_info) diff --git a/src/modules/module-oss.c b/src/modules/module-oss.c index c3972680..89a8152b 100644 --- a/src/modules/module-oss.c +++ b/src/modules/module-oss.c @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -96,8 +97,6 @@ static const char* const valid_modargs[] = { NULL }; -#define DEFAULT_SINK_NAME "oss_output" -#define DEFAULT_SOURCE_NAME "oss_input" #define DEFAULT_DEVICE "/dev/dsp" static void update_usage(struct userdata *u) { @@ -354,6 +353,9 @@ int pa__init(pa_core *c, pa_module*m) { pa_channel_map map; pa_modargs *ma = NULL; char hwdesc[64], *t; + const char *name; + char *name_buf = NULL; + int namereg_fail; assert(c); assert(m); @@ -431,7 +433,14 @@ int pa__init(pa_core *c, pa_module*m) { } if (mode != O_WRONLY) { - if (!(u->source = pa_source_new(c, __FILE__, pa_modargs_get_value(ma, "source_name", DEFAULT_SOURCE_NAME), 0, &ss, &map))) + if ((name = pa_modargs_get_value(ma, "source_name", NULL))) + namereg_fail = 1; + else { + name = name_buf = pa_sprintf_malloc("oss_input.%s", pa_path_get_filename(p)); + namereg_fail = 0; + } + + if (!(u->source = pa_source_new(c, __FILE__, name, namereg_fail, &ss, &map))) goto fail; u->source->userdata = u; @@ -450,8 +459,18 @@ int pa__init(pa_core *c, pa_module*m) { } else u->source = NULL; + pa_xfree(name_buf); + name_buf = NULL; + if (mode != O_RDONLY) { - if (!(u->sink = pa_sink_new(c, __FILE__, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME), 0, &ss, &map))) + if ((name = pa_modargs_get_value(ma, "sink_name", NULL))) + namereg_fail = 1; + else { + name = name_buf = pa_sprintf_malloc("oss_output.%s", pa_path_get_filename(p)); + namereg_fail = 0; + } + + if (!(u->sink = pa_sink_new(c, __FILE__, name, namereg_fail, &ss, &map))) goto fail; u->sink->get_latency = sink_get_latency_cb; @@ -469,6 +488,9 @@ int pa__init(pa_core *c, pa_module*m) { } else u->sink = NULL; + pa_xfree(name_buf); + name_buf = NULL; + assert(u->source || u->sink); u->io = pa_iochannel_new(c->mainloop, u->source ? fd : -1, u->sink ? fd : -1); @@ -516,6 +538,8 @@ fail: if (ma) pa_modargs_free(ma); + + pa_xfree(name_buf); return -1; } -- cgit