diff options
author | Jan Beich <jbeich@FreeBSD.org> | 2016-11-09 21:54:29 +0000 |
---|---|---|
committer | Jan Beich <jbeich@FreeBSD.org> | 2016-11-09 21:54:29 +0000 |
commit | eb137b5117d50b9d870d17ba0de1523a99006441 (patch) | |
tree | 5742ad5d3caca68e6daf9e941548e1c076088c63 /audio/pulseaudio/files/patch-src_modules_module-detect.c | |
parent | Update to 4.13 (diff) |
audio/pulseaudio: respect hw.snd.default_unit
PR: 211684
Submitted by: lightside <lightside@gmx.com>
Reviewed by: Tobias Kortkamp <t@tobik.me>
Approved by: maintainer timeout (3 months)
MFH: 2016Q4 (notorious for affecting www/firefox)
Notes
Notes:
svn path=/head/; revision=425809
Diffstat (limited to 'audio/pulseaudio/files/patch-src_modules_module-detect.c')
-rw-r--r-- | audio/pulseaudio/files/patch-src_modules_module-detect.c | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/audio/pulseaudio/files/patch-src_modules_module-detect.c b/audio/pulseaudio/files/patch-src_modules_module-detect.c index a762c22ceb1c..0566d3eb567c 100644 --- a/audio/pulseaudio/files/patch-src_modules_module-detect.c +++ b/audio/pulseaudio/files/patch-src_modules_module-detect.c @@ -1,12 +1,54 @@ --- src/modules/module-detect.c.orig 2016-05-10 12:28:04 UTC +++ src/modules/module-detect.c -@@ -160,8 +160,7 @@ static int detect_oss(pa_core *c, int ju +@@ -160,11 +160,48 @@ static int detect_oss(pa_core *c, int ju continue; } else if (sscanf(line, "pcm%u: ", &device) == 1) { - /* FreeBSD support, the devices are named /dev/dsp0.0, dsp0.1 and so on */ - pa_snprintf(args, sizeof(args), "device=/dev/dsp%u.0", device); + pa_snprintf(args, sizeof(args), "device=/dev/dsp%u", device); ++ pa_module *m = pa_module_load(c, "module-oss", args); - if (!pa_module_load(c, "module-oss", args)) +- if (!pa_module_load(c, "module-oss", args)) ++ if (!m) ++ continue; ++ ++ if (!pa_endswith(line, "default")) ++ continue; ++ ++ char *p = strrchr(line, '>'); ++ ++ if (p) ++ p = strchr(p, '('); ++ ++ if (!p) continue; ++ ++ if (!c->default_sink && (strstr(p, "play") || (strstr(p, "p:") && !strstr(p, "(0p:")))) { ++ uint32_t idx = PA_IDXSET_INVALID; ++ pa_sink *s; ++ PA_IDXSET_FOREACH(s, c->sinks, idx) { ++ if (s->module == m) { ++ if (!pa_namereg_set_default_sink(c, s)) ++ pa_log_error("failed to set default sink for device: /dev/dsp%u", device); ++ ++ break; ++ } ++ } ++ } ++ ++ if (!c->default_source && (strstr(p, "rec") || (strstr(p, "r:") && !strstr(p, "/0r:")))) { ++ uint32_t idx = PA_IDXSET_INVALID; ++ pa_source *s; ++ PA_IDXSET_FOREACH(s, c->sources, idx) { ++ if (s->module == m) { ++ if (!pa_namereg_set_default_source(c, s)) ++ pa_log_error("failed to set default source for device: /dev/dsp%u", device); ++ ++ break; ++ } ++ } ++ } + } + + n++; |