FreeBSD currently does not set PCM_CAP_DEFAULT for any audio device. The attached patch sets that flag for the default (hw.snd.default_unit) device. It is noted that the OSS implementation from 4Front Technologies sets PCM_CAP_DEFAULT for all devices. Fix: Patch attached with submission follows: How-To-Repeat: This issue is obvious with Wine-1.3.25 where it checks for the first device with PCM_CAP_DEFAULT set. winecfg has an audio tab that can be used to test the sound.
Responsible Changed From-To: freebsd-bugs->freebsd-multimedia Over to maintainer(s).
I think that for this change to be complete we also need to have a sysctl handler for hw.snd.default_unit that would appropriately update PCM_CAP_DEFAULT flag. -- Andriy Gapon
On Thursday, 28 July 2011 15:21:27 Andriy Gapon wrote: > I think that for this change to be complete we also need to have a sysctl > handler for hw.snd.default_unit that would appropriately update > PCM_CAP_DEFAULT flag. Can you please clarify why a sysctl handler is required? My understanding of the code is that dsp_oss_audioinfo() does not store the device capabilities but gets called every time dsp_ioctl() is called with SNDCTL_ENGINEINFO thus there is no persistent state to update when hw.snd.default_unit changes?
To my knowledge, Wine was the only software having an issue with this, and it no longer has such a problem.