mf: Handle errors with source event generator in session.

This commit is contained in:
Santino Mazza 2023-08-29 13:33:32 -03:00 committed by Alexandre Julliard
parent 09c96907c1
commit 0170cd3a4c

View file

@ -3679,7 +3679,9 @@ static HRESULT WINAPI session_events_callback_Invoke(IMFAsyncCallback *iface, IM
if (FAILED(hr = IMFMediaEventGenerator_EndGetEvent(event_source, result, &event))) if (FAILED(hr = IMFMediaEventGenerator_EndGetEvent(event_source, result, &event)))
{ {
WARN("Failed to get event from %p, hr %#lx.\n", event_source, hr); WARN("Failed to get event from %p, hr %#lx.\n", event_source, hr);
goto failed; IMFMediaEventQueue_QueueEventParamVar(session->event_queue, MEError, &GUID_NULL, hr, NULL);
IMFMediaEventGenerator_Release(event_source);
return hr;
} }
if (FAILED(hr = IMFMediaEvent_GetType(event, &event_type))) if (FAILED(hr = IMFMediaEvent_GetType(event, &event_type)))
@ -3872,11 +3874,15 @@ static HRESULT WINAPI session_events_callback_Invoke(IMFAsyncCallback *iface, IM
PropVariantClear(&value); PropVariantClear(&value);
failed: failed:
if (event)
IMFMediaEvent_Release(event);
if (FAILED(hr = IMFMediaEventGenerator_BeginGetEvent(event_source, iface, (IUnknown *)event_source))) if (FAILED(hr = IMFMediaEventGenerator_BeginGetEvent(event_source, iface, (IUnknown *)event_source)))
{
WARN("Failed to re-subscribe, hr %#lx.\n", hr); WARN("Failed to re-subscribe, hr %#lx.\n", hr);
IMFMediaEventQueue_QueueEvent(session->event_queue, event);
}
if (event)
IMFMediaEvent_Release(event);
IMFMediaEventGenerator_Release(event_source); IMFMediaEventGenerator_Release(event_source);