summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2010-08-24 17:33:58 +0300
committerTanu Kaskinen <tanuk@iki.fi>2010-08-24 17:58:35 +0300
commitc277dc65a331887c3e779eb733d4b35c53b6a45f (patch)
tree49bac90632ea65003082292ef49866bb797a90b9
parentef0c73cb9de92c1ea3c7c3e2fc2808dc87af5c7f (diff)
module-alsa-card: New argument: namereg_fail.
This is added so that module-udev-detect can load multiple module-alsa-card instances with the same card name - forcing namereg_fail to false allows the name registry to mangle the card names to be unique.
-rw-r--r--src/modules/alsa/module-alsa-card.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 6bea33d75..37b5a1741 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -53,6 +53,7 @@ PA_MODULE_USAGE(
"sink_properties=<properties for the sink> "
"source_name=<name for the source> "
"source_properties=<properties for the source> "
+ "namereg_fail=<pa_namereg_register() fail parameter value> "
"device_id=<ALSA card index> "
"format=<sample format> "
"rate=<sample rate> "
@@ -73,6 +74,7 @@ static const char* const valid_modargs[] = {
"sink_properties",
"source_name",
"source_properties",
+ "namereg_fail",
"device_id",
"format",
"rate",
@@ -286,6 +288,7 @@ int pa__init(pa_module *m) {
pa_reserve_wrapper *reserve = NULL;
const char *description;
char *fn = NULL;
+ pa_bool_t namereg_fail = FALSE;
pa_alsa_refcnt_inc();
@@ -341,6 +344,18 @@ int pa__init(pa_module *m) {
pa_alsa_init_description(data.proplist);
set_card_name(&data, ma, u->device_id);
+ /* We need to give pa_modargs_get_value_boolean() a pointer to a local
+ * variable instead of using &data.namereg_fail directly, because
+ * data.namereg_fail is a bitfield and taking the address of a bitfield
+ * variable is impossible. */
+ namereg_fail = data.namereg_fail;
+ if (pa_modargs_get_value_boolean(ma, "namereg_fail", &namereg_fail) < 0) {
+ pa_log("Failed to parse boolean argument namereg_fail.");
+ pa_card_new_data_done(&data);
+ goto fail;
+ }
+ data.namereg_fail = namereg_fail;
+
if (reserve)
if ((description = pa_proplist_gets(data.proplist, PA_PROP_DEVICE_DESCRIPTION)))
pa_reserve_wrapper_set_application_device_name(reserve, description);