From: R��mi Bernon <rbernon(a)codeweavers.com> --- dlls/mf/session.c | 19 +++++++++++++++++++ dlls/mf/tests/mf.c | 2 -- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/mf/session.c b/dlls/mf/session.c index 87fe77a730f..5ea6a748940 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -592,7 +592,26 @@ static HRESULT session_bind_output_nodes(IMFTopology *topology) } if (stream_sink) + { + IMFMediaTypeHandler *handler; + + if (SUCCEEDED(hr = IMFStreamSink_GetMediaTypeHandler(stream_sink, &handler))) + { + IMFMediaType *type; + + if (SUCCEEDED(hr = IMFMediaTypeHandler_GetCurrentMediaType(handler, &type))) + hr = IMFMediaTypeHandler_SetCurrentMediaType(handler, type); + + for (i = 0; FAILED(hr) && SUCCEEDED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(handler, i, &type)); ++i) + { + hr = IMFMediaTypeHandler_SetCurrentMediaType(handler, type); + IMFMediaType_Release(type); + } + + IMFMediaTypeHandler_Release(handler); + } IMFStreamSink_Release(stream_sink); + } IUnknown_Release(object); } diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index c65de5fc517..b892e4f0aca 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -2385,7 +2385,6 @@ static void test_media_session_events(void) PropVariantClear(&propvar); ok(handler.enum_count, "got %lu GetMediaTypeByIndex\n", handler.enum_count); - todo_wine ok(handler.set_current_count, "got %lu SetCurrentMediaType\n", handler.set_current_count); handler.enum_count = handler.set_current_count = 0; @@ -2424,7 +2423,6 @@ static void test_media_session_events(void) PropVariantClear(&propvar); ok(!handler.enum_count, "got %lu GetMediaTypeByIndex\n", handler.enum_count); - todo_wine ok(handler.set_current_count, "got %lu SetCurrentMediaType\n", handler.set_current_count); handler.enum_count = handler.set_current_count = 0; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/711