On Wed, 21 Jun 2000, Frank Ramsay wrote:

> > 1. Find DSOUND_MixPrimary
> > 2. Remove the AddRef and Release calls in it.
> > 
> > Fix done. This does not harm, because the DSOUND_MixPrimary is protected
> > by the dsound->lock, which the DirectSoundBuffer::Release needs to acquire
> > before releasing itself anyway! It is exactly because the MixPrimary is
> > protected by the dsound->lock, which DirectSoundBuffer::Release waits for
> > *after* decreasing its own reference count to zero, that a problem occurs;
> > the AddRef increases from 0 to 1, and the Release decreases it back to 0,
> > and then deallocates the buffer. After the mixer thread finishes its job,
> > dsound->lock is released, and then the *original* Release tries to
> > deallocate the buffer... BOOM!
> 
> Will this work with 200005xx?

Probably, but as you might expect, I'm not particularly interested in
checking that myself. Why don't you try yourself?

Reply via email to