From 1d7b8e1ba761314a85908dd172b75a02526ff649 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Aug 2006 17:12:54 +0000 Subject: use the HAL UDI for naming input/output devices git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1200 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-hal-detect.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/modules') diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c index 6a430a83..0063fdbd 100644 --- a/src/modules/module-hal-detect.c +++ b/src/modules/module-hal-detect.c @@ -104,6 +104,14 @@ static void hal_device_free_cb(void *d, PA_GCC_UNUSED void *data) { hal_device_free((struct device*) d); } +static const char *strip_udi(const char *udi) { + const char *slash; + if ((slash = strrchr(udi, '/'))) + return slash+1; + + return udi; +} + #ifdef HAVE_ALSA typedef enum { ALSA_TYPE_SINK, @@ -166,9 +174,14 @@ static pa_module* hal_device_load_alsa(struct userdata *u, const char *udi, if (dbus_error_is_set(error)) return NULL; - module_name = (type == ALSA_TYPE_SINK) ? "module-alsa-sink" - : "module-alsa-source"; - snprintf(args, sizeof(args), "device=hw:%u", card); + if (type == ALSA_TYPE_SINK) { + module_name = "module-alsa-sink"; + snprintf(args, sizeof(args), "device=hw:%u sink_name=alsa_output.%s", card, strip_udi(udi)); + } else { + module_name = "module-alsa-source"; + snprintf(args, sizeof(args), "device=hw:%u source_name=alsa_input.%s", card, strip_udi(udi)); + } + return pa_module_load(u->core, module_name, args); } @@ -216,7 +229,7 @@ static pa_module* hal_device_load_oss(struct userdata *u, const char *udi, if (!device || dbus_error_is_set(error)) return NULL; - snprintf(args, sizeof(args), "device=%s", device); + snprintf(args, sizeof(args), "device=%s sink_name=oss_output.%s source_name=oss_input.%s", device, strip_udi(udi), strip_udi(udi)); libhal_free_string(device); return pa_module_load(u->core, "module-oss", args); -- cgit