This patch is similar to the patch by Jerry Ji (position-notify array cleanup for IDirectSoundNotify). It moves the position notify array into IDirectSoundNotify. It also eliminates the pointers from IDirectSoundNotify back to the buffers. It also adds the ability to use hardware notifies (really driver notifies). The reversal of ownership between the buffers and notifies should be ok but it introduces a minor problem. In windows, it looks like a notify is a composite part of the buffer rather than a separate piece accessed through a pointer. This throws the reference count off by one and I have a workaround but I don't know the proper way of dealing with this in wine. This patch also fixes two capture buffer creation failure bugs. The partially created buffer in now deleted properly. It also fixes a bug where a wave format structure with a PCM format but a non zero cbSize was handled improperly. It also fixes the bug Jerry Ji was trying to fix. The old code appended a new array to the old one rather than replacing it. Adding a hardware notify introduces the use a new GUID from dsdriver.h. I had to add initguid.h to get it to compile but is this the proper thing to do? Should this file be added to libs/uuid? Any comments or testers would be appreciated. Thanks, Bob.
Attachment:
dsound.diff
Description: application/unknown-content-type-diff_auto_file