Maarten Lankhorst : mmdevapi: Don' t load openal on older openal-soft versions.
Alexandre Julliard
julliard at winehq.org
Thu Apr 15 11:37:39 CDT 2010
Module: wine
Branch: master
Commit: e9cee6fbe03c1b63dbe38726b5e42b4f64f05daa
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e9cee6fbe03c1b63dbe38726b5e42b4f64f05daa
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Wed Apr 14 21:18:42 2010 +0200
mmdevapi: Don't load openal on older openal-soft versions.
---
dlls/mmdevapi/devenum.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c
index 0f6f45d..41011e7 100644
--- a/dlls/mmdevapi/devenum.c
+++ b/dlls/mmdevapi/devenum.c
@@ -732,16 +732,40 @@ static void openal_setformat(MMDevice *This, DWORD freq)
}
}
+static int blacklist_pulse;
+
static int blacklist(const char *dev) {
#ifdef __linux__
if (strncmp(dev, "OSS ", 4))
return 1;
#endif
+ if (blacklist_pulse && !strncmp(dev, "PulseAudio ", 11))
+ return 1;
if (strstr(dev, "ALSA") && strstr(dev, "hw:"))
return 1;
return 0;
}
+static void pulse_fixup(const char *devstr, const char **defstr) {
+ static int warned;
+
+ if (!blacklist_pulse && !local_contexts)
+ blacklist_pulse = 1;
+
+ if (!blacklist_pulse || !devstr || strncmp(*defstr, "PulseAudio ", 11))
+ return;
+
+ if (!warned++) {
+ ERR("Disabling pulseaudio because of old openal version\n");
+ ERR("Please upgrade to openal-soft v1.12 or newer\n");
+ }
+ while (*devstr && !strncmp(devstr, "PulseAudio ", 11)) {
+ devstr += strlen(devstr) + 1;
+ }
+ TRACE("New default: %s\n", devstr);
+ *defstr = devstr;
+}
+
static void openal_scanrender(void)
{
WCHAR name[MAX_PATH];
@@ -756,6 +780,7 @@ static void openal_scanrender(void)
defaultstr = palcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
devstr = palcGetString(NULL, ALC_DEVICE_SPECIFIER);
}
+ pulse_fixup(devstr, &defaultstr);
defblacklisted = blacklist(defaultstr);
if (defblacklisted)
WARN("Disabling blacklist because %s is blacklisted\n", defaultstr);
@@ -796,6 +821,7 @@ static void openal_scancapture(void)
EnterCriticalSection(&openal_crst);
devstr = palcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER);
defaultstr = palcGetString(NULL, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
+ pulse_fixup(devstr, &defaultstr);
defblacklisted = blacklist(defaultstr);
if (defblacklisted)
WARN("Disabling blacklist because %s is blacklisted\n", defaultstr);
More information about the wine-cvs
mailing list