[PATCH 4/5] mf: Fix MFGetTopoNodeCurrentType for MF_TOPOLOGY_OUTPUT_NODE type.

Rémi Bernon wine at gitlab.winehq.org
Mon Jul 4 07:08:41 CDT 2022


From: Rémi Bernon <rbernon at codeweavers.com>

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/mf/tests/mf.c |  6 +-----
 dlls/mf/topology.c | 13 +++----------
 2 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index eaac991566b..615767296b1 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -6017,7 +6017,6 @@ static void test_MFGetTopoNodeCurrentType(void)
     hr = MFCreateTopologyNode(MF_TOPOLOGY_OUTPUT_NODE, &node);
     ok(hr == S_OK, "Failed to create a node, hr %#lx.\n", hr);
     hr = pMFGetTopoNodeCurrentType(node, 0, FALSE, &media_type);
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
     hr = pMFGetTopoNodeCurrentType(node, 1, FALSE, &media_type);
     todo_wine
@@ -6029,17 +6028,14 @@ static void test_MFGetTopoNodeCurrentType(void)
     hr = IMFTopologyNode_SetObject(node, (IUnknown *)output_handler);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = pMFGetTopoNodeCurrentType(node, 0, FALSE, &media_type);
-    todo_wine
     ok(hr == MF_E_NOT_INITIALIZED, "Unexpected hr %#lx.\n", hr);
 
-    media_type = NULL;
     hr = IMFMediaTypeHandler_SetCurrentMediaType(output_handler, input_types[0]);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = pMFGetTopoNodeCurrentType(node, 0, FALSE, &media_type);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(media_type == input_types[0], "Unexpected pointer.\n");
-    if (media_type) IMFMediaType_Release(media_type);
+    IMFMediaType_Release(media_type);
 
     ref = IMFTopologyNode_Release(node);
     ok(ref == 0, "Release returned %ld\n", ref);
diff --git a/dlls/mf/topology.c b/dlls/mf/topology.c
index 8d64c10b5c7..f4c28e747db 100644
--- a/dlls/mf/topology.c
+++ b/dlls/mf/topology.c
@@ -1827,7 +1827,6 @@ HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *node, DWORD stream, BOO
 {
     IMFMediaTypeHandler *type_handler;
     MF_TOPOLOGY_TYPE node_type;
-    IMFStreamSink *stream_sink;
     IMFStreamDescriptor *sd;
     IMFTransform *transform;
     UINT32 primary_output;
@@ -1841,16 +1840,10 @@ HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *node, DWORD stream, BOO
     switch (node_type)
     {
         case MF_TOPOLOGY_OUTPUT_NODE:
-            if (SUCCEEDED(topology_node_get_object(node, &IID_IMFStreamSink, (void **)&stream_sink)))
+            if (SUCCEEDED(hr = topology_node_get_object(node, &IID_IMFMediaTypeHandler, (void **)&type_handler)))
             {
-                hr = IMFStreamSink_GetMediaTypeHandler(stream_sink, &type_handler);
-                IMFStreamSink_Release(stream_sink);
-
-                if (SUCCEEDED(hr))
-                {
-                    hr = IMFMediaTypeHandler_GetCurrentMediaType(type_handler, type);
-                    IMFMediaTypeHandler_Release(type_handler);
-                }
+                hr = IMFMediaTypeHandler_GetCurrentMediaType(type_handler, type);
+                IMFMediaTypeHandler_Release(type_handler);
             }
             break;
         case MF_TOPOLOGY_SOURCESTREAM_NODE:
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/369



More information about the wine-devel mailing list