[PATCH v4 4/5] winegstreamer: Implement source event methods.
Nikolay Sivov
nsivov at codeweavers.com
Tue Sep 1 02:48:23 CDT 2020
On 8/28/20 11:48 PM, Derek Lesho wrote:
> @@ -178,15 +187,27 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
> static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_source **out_media_source)
> {
> struct media_source *object = heap_alloc_zero(sizeof(*object));
> + HRESULT hr;
>
> if (!object)
> return E_OUTOFMEMORY;
>
> + if (FAILED(hr = MFCreateEventQueue(&object->event_queue)))
> + goto fail;
> +
> object->IMFMediaSource_iface.lpVtbl = &IMFMediaSource_vtbl;
> object->ref = 1;
>
> *out_media_source = object;
> return S_OK;
> +
> + fail:
> + WARN("Failed to construct MFMediaSource, hr %#x.\n", hr);
> +
> + if (object->event_queue)
> + IMFMediaEventQueue_Release(object->event_queue);
> + heap_free(object);
> + return hr;
> }
Might be easier to do a regular Release() on failure.
On source release you should release the queue, and probably shutdown
too just in case.
More information about the wine-devel
mailing list