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. For example: > -/* an exact wodGetPosition is usually not worth the extra context > switches, - * as we're going to have near fragment accuracy anyway */ > -/* #define EXACT_WODPOSITION */ > - These are comments, can stay. > #include "config.h" > > #include <stdlib.h> > @@ -130,8 +126,7 @@ > */ > typedef struct { > /* FIXME: this could be made a dynamically growing array (if needed) > */ - /* maybe it's needed, a Humongous game manages to transmit 128 > messages at once at startup */ -#define OSS_RING_BUFFER_SIZE 192 > +#define OSS_RING_BUFFER_SIZE 30 Maybe (?) this one can stay. > opening */ DWORD dwWrittenTotal; /* number of > bytes written to OSS buffer since opening */ > - BOOL bNeedPost; /* whether audio This one can stay. > TRACE("fragments=%d/%d, fragsize=%d, bytes=%d\n", > - dspspace.fragments, dspspace.fragstotal, dspspace.fragsize, > dspspace.bytes); + dspspace.fragments, dspspace.fragstotal, > dspspace.fragsize, dspspace.bytes); This one seems to be just white space change, so it can stay. > wwo->dwPlayedTotal = 0; > wwo->dwWrittenTotal = 0; > - wwo->bNeedPost = TRUE; Can stay. > OSS_InitRingMessage(&wwo->msgRing); > > @@ -1568,9 +1541,7 @@ > if (lpTime == NULL) return MMSYSERR_INVALPARAM; > > wwo = &WOutDev[wDevID]; > -#ifdef EXACT_WODPOSITION > OSS_AddRingMessage(&wwo->msgRing, WINE_WM_UPDATE, 0, TRUE); > -#endif > val = wwo->dwPlayedTotal; Ditto. -- Dimi.