Christian Costa wrote:
Hi,
This is the first of a serie of patches that implement an audio (dsound) & video (ddraw) renderers, a decoder (a VFW wrapper filter) and the IGraphBuilder interface.
Cool. I wish I had more time to work on this area.
Actually I can do a playback of a MSVC/CRAM avi file with a winetest app but the code is very ugly (especially the IGraphBuilder interface which is somewhat harcoded) and I need to clean it a bit.
Looking forward to the patches :)
Changelog: Added missing initialization of the filesource output pin critical section.
Good catch.
Avoid indefinite wait when calling GetOverlappedResult.
This shouldn't happen. GetOverlappedResult should do a wait on the event object, just like the wait above that succeeds (and GetOverlappedResult is called) or times out (and GetOverlappedResult is not called). I suspect that the bug is elsewhere, perhaps an event should be created for each request and then WaitForMultipleObjects used.
Fixed initial refcount of the IMemAllocator object.
Good catch again. This was originally correct, but I believe I changed the class factory to avoid this silly convention.
Rob
Avoid indefinite wait when calling GetOverlappedResult.
This shouldn't happen. GetOverlappedResult should do a wait on the event object, just like the wait above that succeeds (and GetOverlappedResult is called) or times out (and GetOverlappedResult is not called). I suspect that the bug is elsewhere, perhaps an event should be created for each request and then WaitForMultipleObjects used.
BTW, I meant infinite wait...
Well, some lines above the GetOverlappedResult, there is a WaitForSingleObject on the event and since the event is resetted automatically there (the event is not manual) GetOverlappedResult will wait forever. There is no bug elsewhere its a rather simple win32 related problem. Anyway, we may make use of a manual event for real asynchronous requests. The avi splitter don't do that at the moment so the current implementation is enough.
Thanks for the comments. :-) Christian
Christian Costa wrote:
Avoid indefinite wait when calling GetOverlappedResult.
This shouldn't happen. GetOverlappedResult should do a wait on the event object, just like the wait above that succeeds (and GetOverlappedResult is called) or times out (and GetOverlappedResult is not called). I suspect that the bug is elsewhere, perhaps an event should be created for each request and then WaitForMultipleObjects used.
BTW, I meant infinite wait...
Well, some lines above the GetOverlappedResult, there is a WaitForSingleObject on the event and since the event is resetted automatically there (the event is not manual) GetOverlappedResult will wait forever. There is no bug elsewhere its a rather simple win32 related problem. Anyway, we may make use of a manual event for real asynchronous requests. The avi splitter don't do that at the moment so the current implementation is enough.
Ah, yes. In that case the patch is correct.
Thanks for the comments. :-)
You're welcome.
Rob