diff options
| -rw-r--r-- | src/modules/module-udev-detect.c | 18 | 
1 files changed, 15 insertions, 3 deletions
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c index f143c283..775094da 100644 --- a/src/modules/module-udev-detect.c +++ b/src/modules/module-udev-detect.c @@ -45,7 +45,8 @@ PA_MODULE_VERSION(PACKAGE_VERSION);  PA_MODULE_LOAD_ONCE(TRUE);  PA_MODULE_USAGE(          "tsched=<enable system timer based scheduling mode?> " -        "ignore_dB=<ignore dB information from the device?>"); +        "ignore_dB=<ignore dB information from the device?> " +        "sync_volume=<syncronize sw and hw voluchanges in IO-thread?>");  struct device {      char *path; @@ -62,6 +63,7 @@ struct userdata {      pa_bool_t use_tsched:1;      pa_bool_t ignore_dB:1; +    pa_bool_t sync_volume:1;      struct udev* udev;      struct udev_monitor *monitor; @@ -74,6 +76,7 @@ struct userdata {  static const char* const valid_modargs[] = {      "tsched",      "ignore_dB", +    "sync_volume",      NULL  }; @@ -386,12 +389,14 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {                                  "namereg_fail=false "                                  "tsched=%s "                                  "ignore_dB=%s " +                                "sync_volume=%s "                                  "card_properties=\"module-udev-detect.discovered=1\"",                                  path_get_card_id(path),                                  n,                                  d->card_name,                                  pa_yes_no(u->use_tsched), -                                pa_yes_no(u->ignore_dB)); +                                pa_yes_no(u->ignore_dB), +                                pa_yes_no(u->sync_volume));      pa_xfree(n);      pa_hashmap_put(u->devices, d->path, d); @@ -661,7 +666,8 @@ int pa__init(pa_module *m) {      struct udev_enumerate *enumerate = NULL;      struct udev_list_entry *item = NULL, *first = NULL;      int fd; -    pa_bool_t use_tsched = TRUE, ignore_dB = FALSE; +    pa_bool_t use_tsched = TRUE, ignore_dB = FALSE, sync_volume = FALSE; +      pa_assert(m); @@ -687,6 +693,12 @@ int pa__init(pa_module *m) {      }      u->ignore_dB = ignore_dB; +    if (pa_modargs_get_value_boolean(ma, "sync_volume", &sync_volume) < 0) { +        pa_log("Failed to parse sync_volume= argument."); +        goto fail; +    } +    u->sync_volume = sync_volume; +      if (!(u->udev = udev_new())) {          pa_log("Failed to initialize udev library.");          goto fail;  | 
