http://bugs.winehq.org/show_bug.cgi?id=25750
Raymond superquad.vortex2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |superquad.vortex2@gmail.com
--- Comment #5 from Raymond superquad.vortex2@gmail.com 2011-01-12 01:36:51 CST --- Just like PA server
dsoutput.c
snd_pcm_sw_params_set_stop_threshold(pcm, sw_params, boundary);
CheckXRUN won't work any more because state will not be SND_PCM_STATE_XRUN anymore when avail frames > buffer size since boundary >> buffer size
http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___s_w___params.h...
PCM is automatically stopped in SND_PCM_STATE_XRUN state when available frames is >= threshold. If the stop threshold is equal to boundary (also software parameter - sw_param) then automatic stop will be disabled (thus device will do the endless loop in the ring buffer)
static void CheckXRUN(IDsDriverBufferImpl* This) { snd_pcm_state_t state = snd_pcm_state(This->pcm); snd_pcm_sframes_t delay; int err;
snd_pcm_hwsync(This->pcm); snd_pcm_delay(This->pcm, &delay); if ( state == SND_PCM_STATE_XRUN ) {