[PATCH v5 1/3] winegstreamer: Duplicate source shutdown path into constructor with leak fixes.

Zebediah Figura zfigura at codeweavers.com
Wed Sep 15 16:10:30 CDT 2021


On 9/15/21 2:30 PM, Alexandre Julliard wrote:
> Zebediah Figura <zfigura at codeweavers.com> writes:
> 
>> From: Derek Lesho <dlesho at codeweavers.com>
>>
>> Instead of having mixing together IMFMediaSource::Shutdown() and the
>> constructors' failure paths, creating confusion about what should be released
>> where, designate ::Shutdown/::Release to shutting down fully initialized objects
>> without checks, and keep the partially-created object cleanup code in the
>> constructor.
>>
>> Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
>> Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
>> ---
>> v5: Resent with a couple of spacing tweaks for consistency; also use UINT_MAX
>> instead of UINT32_MAX to match the type.
>>
>>   dlls/winegstreamer/gst_private.h  |   1 +
>>   dlls/winegstreamer/media_source.c | 102 +++++++++++++++++++-----------
>>   2 files changed, 66 insertions(+), 37 deletions(-)
> 
> It breaks the tests here:
> 
> tools/runtest -q -P wine -T . -M mfplat.dll -p dlls/mfplat/tests/mfplat_test.exe mfplat && touch dlls/mfplat/tests/mfplat.ok
> winegstreamer error: decodebin0: Your GStreamer installation is missing a plug-in.
> winegstreamer error: decodebin0: ../gst/playback/gstdecodebin2.c(4719): gst_decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin0:
> no suitable plugins found:
> Missing decoder: MPEG-4 Video (Simple Profile) (video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string)simple, level=(string)1, codec_data=(buffer)000001b001000001b58913000001000000012000c48d8800cd0024009463000001b24c61766335382e32312e313034, width=(int)4, height=(int)4, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true)
> 
> winegstreamer error: qtdemux0: Internal data stream error.
> winegstreamer error: qtdemux0: ../gst/isomp4/qtdemux.c(6545): gst_qtdemux_loop (): /GstBin:bin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0:
> streaming stopped, reason not-linked (-1)
> 

This is actually a preëxisting race; I can reproduce it consistently 
with usptream by adding a Sleep(100) right after the "fail" label in 
media_source_constructor(). I'll resend this series with a fix added.



More information about the wine-devel mailing list