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.