http://bugs.winehq.org/show_bug.cgi?id=22498
--- Comment #29 from Raymond superquad.vortex2@gmail.com 2010-12-20 21:17:49 CST --- (In reply to comment #7)
Do the changed times matter?
Also, multiple waveopens to the same device
if ALSA_waveinit (In reply to comment #4)
Created an attachment (id=27568)
--> (http://bugs.winehq.org/attachment.cgi?id=27568) [details]
my waveout.c
You will have to remove the line that says "ALSA_WaveInit();" otherwise bad things might occur.
But ALSA_WodNumDevs is computed in ALSA_waveinit() , so the waveout_count is the number of pcm devices in your system
Removing the ALSA_waveinit() imply the driver cannot provide a correct waveoutcaps to the application since waveoutcaps is computed in ALSA_ComputeCaps() inside ALSA_waveinit()
This mean that you must configure ALSA to have one sound card with playback/capture device to test your patch
static DWORD wodInit(void) { DWORD i = 0; ALSA_WaveInit(); waveout_count = ALSA_WodNumDevs;
when you have used up the subdevices of hardware mixing sound card, MMSYSERR_NOTENABLED seem not a correct error
err = snd_pcm_open(&wwo->pcm, WOutDev[dev->devid].pcmname, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); if (err < 0) { FIXME("Could not open sound device: %s\n", snd_strerror(err)); ret = MMSYSERR_NOTENABLED; goto error; }