--- dlls/wineoss.drv/audio.c.orig 2009-01-31 00:54:01.000000000 +0800 +++ dlls/wineoss.drv/audio.c 2009-02-10 14:16:35.000000000 +0800 @@ -2023,7 +2023,7 @@ while ((1 << shift) <= fsize) shift++; shift--; - audio_fragment = 0x00100000 + shift; /* 16 fragments of 2^shift */ + audio_fragment = 0x00200000 + shift; /* 32 fragments of 2^shift */ } TRACE("requesting %d %d byte fragments (%d ms/fragment)\n", @@ -2038,7 +2038,10 @@ /* we want to be able to mmap() the device, which means it must be opened readable, * otherwise mmap() will fail (at least under Linux) */ ret = OSS_OpenDevice(&wwo->ossdev, - (dwFlags & WAVE_DIRECTSOUND) ? O_RDWR : O_WRONLY, +#ifndef __FreeBSD__ + (dwFlags & WAVE_DIRECTSOUND) ? O_RDWR : +#endif + O_WRONLY, &audio_fragment, (dwFlags & WAVE_DIRECTSOUND) ? 0 : 1, lpDesc->lpFormat->nSamplesPerSec, --- dlls/dsound/primary.c.orig 2009-05-10 09:16:29.000000000 +0800 +++ dlls/dsound/primary.c 2009-05-10 09:18:00.000000000 +0800 @@ -174,8 +174,10 @@ return err; } } +#ifndef __FreeBSD__ if (device->hwbuf) IDsDriverBuffer_SetVolumePan(device->hwbuf, &device->volpan); +#endif DSOUND_RecalcPrimary(device); device->prebuf = ds_snd_queue_max;