[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