http://bugs.winehq.org/show_bug.cgi?id=13046
--- Comment #1 from Ben Mayhew ben-dev@gmx.net 2008-05-08 04:32:19 --- Created an attachment (id=12819) --> (http://bugs.winehq.org/attachment.cgi?id=12819) -d3d_draw,+dsound,+relay
I tried running it with +relay to see what was happening when SetEvent() is not being processed. Line 344400 is surprising:
trace:dsound:SecondaryBufferImpl_GetCurrentPosition (0x4d1ftrace:dsound:DSOUND_Chtrace:dsound:IDirectSoundBufferImpl_GetCurrentPosittrace:dsound:DSOUND_CheckEvent ch001a:Call ntdll.RtlAcquireResourceShtrace:dsound:DSOUND_MixOne new primar001a:Ret ntdll.RtlAcquireResourceShar0019:Call ntdll.RtlReleaseResource001a:Call ntdll.RtlRelea0019:Ret ntdll.RtlReleaseResource001a:Ret ntdll.RtlReleaseResourtrace:dsound:DSOUND_MixToPrimary M001a:Call KERNEL32.GetTickCount() rtrace:dsound001a:Ret KERNEL32.GetTickCount() retval=0000236d ret=7e8trace:trace:dsound:IDirectSoundBufferImpl_GetCurrentPosition playpos trace:dsound:DSOUND_MixToPrimary MixToPrimary for 0x4e20440, strace:dtrace:dsound:DSOUND_MixToPrimary MixToPrimary for 0x6070ac0, state=0
I'm not sure what's happening there but it looks like two threads are executing at the same time.