summaryrefslogtreecommitdiffstats
path: root/src/modules/module-hal-detect.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-11 17:12:54 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-11 17:12:54 +0000
commit1d7b8e1ba761314a85908dd172b75a02526ff649 (patch)
tree3dba21561aa49a50a0a99000456c9741bd504827 /src/modules/module-hal-detect.c
parent539612a5c27a9b786ba76fb632110d9fa9178a39 (diff)
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
Diffstat (limited to 'src/modules/module-hal-detect.c')
-rw-r--r--src/modules/module-hal-detect.c21
1 files changed, 17 insertions, 4 deletions
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);