--- dlls/wineoss.drv/audio.c 2007-10-20 22:42:15.000000000 +0200
+++ dlls/wineoss.drv/audio.c 2007-10-21 13:07:00.000000000 +0200
@@ -1149,11 +1149,18 @@
LRESULT OSS_WaveInit(void)
{
char* str;
+ char* IND;
+ char* OND;
int i;
/* FIXME: Remove unneeded members of WOutDev and WInDev */
TRACE("()\n");
+ /* Add INPUTDEV and OUTPUTDEV for more comfort. */
+
+ IND = getenv("INPUTDEV");
+ OND = getenv("OUTPUTDEV");
+
str=getenv("AUDIODEV");
if (str!=NULL)
{
@@ -1167,14 +1174,49 @@
}
else
{
- WOutDev[0].ossdev.dev_name = WInDev[0].ossdev.dev_name = StrDup("/dev/dsp",NULL);
- WOutDev[0].ossdev.mixer_name = WInDev[0].ossdev.mixer_name = StrDup("/dev/mixer",NULL);
- for (i = 1; i < MAX_WAVEDRV; ++i)
+ if (OND!=NULL)
+ {
+ WOutDev[0].ossdev.dev_name = StrDup(OND,""); // WInDev[0].ossdev.dev_name = StrDup("/dev/dsp",NULL);
+ WOutDev[0].ossdev.mixer_name = StrDup(getenv("MIXEROUTDEV"),"/dev/mixer"); // WInDev[0].ossdev.mixer_name = StrDup("/dev/mixer",NULL);
+ for (i = 1; i < MAX_WAVEDRV; ++i)
+ {
+ WOutDev[i].ossdev.dev_name = StrDup("",NULL);
+ WOutDev[i].ossdev.mixer_name = StrDup("",NULL);
+ }
+ }
+ else
+ {
+ WOutDev[0].ossdev.dev_name = StrDup("/dev/dsp",NULL);
+ WOutDev[0].ossdev.mixer_name = StrDup("/dev/mixer",NULL);
+ for (i = 1; i < MAX_WAVEDRV; ++i)
+ {
+ WOutDev[i].ossdev.dev_name = HeapAlloc(GetProcessHeap(),0,11);
+ sprintf(WOutDev[i].ossdev.dev_name, "/dev/dsp%d", i);
+ WOutDev[i].ossdev.mixer_name = HeapAlloc(GetProcessHeap(),0,13);
+ sprintf(WOutDev[i].ossdev.mixer_name, "/dev/mixer%d", i);
+ }
+ }
+ if (IND!=NULL)
{
- WOutDev[i].ossdev.dev_name = WInDev[i].ossdev.dev_name = HeapAlloc(GetProcessHeap(),0,11);
- sprintf(WOutDev[i].ossdev.dev_name, "/dev/dsp%d", i);
- WOutDev[i].ossdev.mixer_name = WInDev[i].ossdev.mixer_name = HeapAlloc(GetProcessHeap(),0,13);
- sprintf(WOutDev[i].ossdev.mixer_name, "/dev/mixer%d", i);
+ WInDev[0].ossdev.dev_name = StrDup(IND,"");
+ WInDev[0].ossdev.mixer_name = StrDup(getenv("MIXERINDEV"),"/dev/mixer");
+ for (i = 1; i < MAX_WAVEDRV; ++i)
+ {
+ WInDev[i].ossdev.dev_name = StrDup("",NULL);
+ WInDev[i].ossdev.mixer_name = StrDup("",NULL);
+ }
+ }
+ else
+ {
+ WInDev[0].ossdev.dev_name = StrDup("/dev/dsp",NULL);
+ WInDev[0].ossdev.mixer_name = StrDup("/dev/mixer",NULL);
+ for (i = 1; i < MAX_WAVEDRV; ++i)
+ {
+ WInDev[i].ossdev.dev_name = HeapAlloc(GetProcessHeap(),0,11);
+ sprintf(WInDev[i].ossdev.dev_name, "/dev/dsp%d", i);
+ WInDev[i].ossdev.mixer_name = HeapAlloc(GetProcessHeap(),0,13);
+ sprintf(WInDev[i].ossdev.mixer_name, "/dev/mixer%d", i);
+ }
}
}