Problem with patch "dsound: Simplify mixing by removing remixing support, and fix its waveout breakage"

Chris Rankin rankincj at yahoo.com
Mon Jun 25 14:14:14 CDT 2007


Hi,

This patch has killed the sound on World of Warcraft. Instead, I now get silence and a stream of
errors like this:

err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!
err:dsound:DSOUND_CalcPlayPosition Bad length in CalcPlayPosition!

The following change makes the sound work again without error messages, but there is still a brief
burst of sound/noise before the music starts properly:

$ cvswine diff dlls/dsound/buffer.c
Index: dlls/dsound/buffer.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/buffer.c,v
retrieving revision 1.70
diff -u -r1.70 buffer.c
--- dlls/dsound/buffer.c        22 Jun 2007 12:37:22 -0000      1.70
+++ dlls/dsound/buffer.c        25 Jun 2007 19:08:34 -0000
@@ -442,15 +442,15 @@
        pmix *= This->pwfx->nBlockAlign;
 
        TRACE("this back-offset=%d\n", pmix);
-
+#if 0
        /* sanity */
        if(pmix > This->buflen){
                ERR("Bad length in CalcPlayPosition!\n");
                return 0;
        }
-
+#endif
        /* subtract from our last mixed position */
-       if (bplay < pmix) bplay += This->buflen; /* wraparound */
+       while (bplay < pmix) bplay += This->buflen; /* wraparound */
        bplay -= pmix;
 
        /* check for lead-in */


Cheers,
Chris



	
	
		
___________________________________________________________ 
New Yahoo! Mail is the ultimate force in competitive emailing. Find out more at the Yahoo! Mail Championships. Plus: play games and win prizes. 
http://uk.rd.yahoo.com/evt=44106/*http://mail.yahoo.net/uk 



More information about the wine-patches mailing list