Dimitrie O. Paun wrote:
On December 11, 2002 01:48 am, Dan Kegel wrote:
I've tracked it down further. Attached find a trace+wave and a patch that reverts half of Ove's patch from August, thereby "fixing" the problem.
I suggest leaving the noops in, so you minimize the size of the patch, and thus narrow down the bug even further.
Thanks for the encouragement. I think I have it. Here's the smallest reversion that fixes the problem for me:
--- wine-20021125/dlls/winmm/wineoss/audio.c 2002-11-04 14:39:19.000000000 -0800 +++ wine-20021125/dlls/winmm/wineoss/audio.c.spam 2002-12-10 22:57:27.000000000 -0800 @@ -1148,8 +1147,10 @@ dspspace.fragments, dspspace.fragstotal, dspspace.fragsize, dspspace.bytes);
/* input queue empty and output buffer with less than one fragment to play */ - if (!wwo->lpPlayPtr && wwo->dwBufferSize < availInQ + wwo->dwFragmentSize) { - TRACE("Run out of wavehdr:s...\n"); + if (!wwo->lpPlayPtr && wwo->dwBufferSize < availInQ + 2 * wwo->dwFragmentSize) { + TRACE("Run out of wavehdr:s... flushing (%lu => %lu)\n", + wwo->dwPlayedTotal, wwo->dwWrittenTotal); + wwo->dwPlayedTotal = wwo->dwWrittenTotal; return INFINITE; }
Can someone who understands the code comment?
Thanks, Dan