mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
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
This commit is contained in:
parent
539612a5c2
commit
1d7b8e1ba7
1 changed files with 17 additions and 4 deletions
|
|
@ -104,6 +104,14 @@ static void hal_device_free_cb(void *d, PA_GCC_UNUSED void *data) {
|
||||||
hal_device_free((struct device*) d);
|
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
|
#ifdef HAVE_ALSA
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ALSA_TYPE_SINK,
|
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))
|
if (dbus_error_is_set(error))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
module_name = (type == ALSA_TYPE_SINK) ? "module-alsa-sink"
|
if (type == ALSA_TYPE_SINK) {
|
||||||
: "module-alsa-source";
|
module_name = "module-alsa-sink";
|
||||||
snprintf(args, sizeof(args), "device=hw:%u", card);
|
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);
|
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))
|
if (!device || dbus_error_is_set(error))
|
||||||
return NULL;
|
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);
|
libhal_free_string(device);
|
||||||
|
|
||||||
return pa_module_load(u->core, "module-oss", args);
|
return pa_module_load(u->core, "module-oss", args);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue