From: Torge Matthies tmatthies@codeweavers.com
--- dlls/winegstreamer/media_sink.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/winegstreamer/media_sink.c b/dlls/winegstreamer/media_sink.c index 5f824033527..4ccf9b3bb51 100644 --- a/dlls/winegstreamer/media_sink.c +++ b/dlls/winegstreamer/media_sink.c @@ -446,6 +446,8 @@ static HRESULT WINAPI stream_sink_type_handler_SetCurrentMediaType(IMFMediaTypeH static HRESULT WINAPI stream_sink_type_handler_GetCurrentMediaType(IMFMediaTypeHandler *iface, IMFMediaType **type) { struct stream_sink *stream_sink = impl_from_IMFMediaTypeHandler(iface); + IMFMediaType *type_copy = NULL; + HRESULT hr;
TRACE("iface %p, type %p.\n", iface, type);
@@ -454,9 +456,15 @@ static HRESULT WINAPI stream_sink_type_handler_GetCurrentMediaType(IMFMediaTypeH if (!stream_sink->type) return MF_E_NOT_INITIALIZED;
- IMFMediaType_AddRef((*type = stream_sink->type)); - - return S_OK; + hr = MFCreateMediaType(&type_copy); + if (FAILED(hr)) + return hr; + hr = IMFMediaType_CopyAllItems(stream_sink->type, (IMFAttributes*)type_copy); + if (FAILED(hr)) + IMFMediaType_Release(type_copy); + else + *type = type_copy; + return hr; }
static HRESULT WINAPI stream_sink_type_handler_GetMajorType(IMFMediaTypeHandler *iface, GUID *type)