Zebediah Figura : qcap: Iterate over all source pins in find_unconnected_source_from_filter().

Alexandre Julliard julliard at winehq.org
Thu Apr 9 16:04:44 CDT 2020


Module: wine
Branch: master
Commit: 1371838debaade98ddaeaf5da506583d338e4498
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1371838debaade98ddaeaf5da506583d338e4498

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Wed Apr  8 15:58:55 2020 -0500

qcap: Iterate over all source pins in find_unconnected_source_from_filter().

find_unconnected_source_from_pin() already checks the category and majortype
anyway.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/qcap/capturegraph.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/dlls/qcap/capturegraph.c b/dlls/qcap/capturegraph.c
index 6c20e727a2..a5b00df90b 100644
--- a/dlls/qcap/capturegraph.c
+++ b/dlls/qcap/capturegraph.c
@@ -540,9 +540,9 @@ static HRESULT find_unconnected_source_from_pin(CaptureGraphImpl *capture_graph,
 static HRESULT find_unconnected_source_from_filter(CaptureGraphImpl *capture_graph,
         const GUID *category, const GUID *majortype, IBaseFilter *filter, IPin **ret)
 {
+    IEnumPins *enumpins;
     IPin *pin, *peer;
     HRESULT hr;
-    int index;
 
     if (category && (IsEqualGUID(category, &PIN_CATEGORY_CAPTURE)
             || IsEqualGUID(category, &PIN_CATEGORY_PREVIEW)))
@@ -561,14 +561,20 @@ static HRESULT find_unconnected_source_from_filter(CaptureGraphImpl *capture_gra
         return E_INVALIDARG;
     }
 
-    for (index = 0; SUCCEEDED(ICaptureGraphBuilder2_FindPin(&capture_graph->ICaptureGraphBuilder2_iface,
-            (IUnknown *)filter, PINDIR_OUTPUT, category, majortype, FALSE, index, &pin)); ++index)
+    if (FAILED(hr = IBaseFilter_EnumPins(filter, &enumpins)))
+        return hr;
+
+    while (IEnumPins_Next(enumpins, 1, &pin, NULL) == S_OK)
     {
-        hr = find_unconnected_source_from_pin(capture_graph, category, majortype, pin, ret);
-        IPin_Release(pin);
-        if (SUCCEEDED(hr))
+        if (SUCCEEDED(hr = find_unconnected_source_from_pin(capture_graph, category, majortype, pin, ret)))
+        {
+            IEnumPins_Release(enumpins);
+            IPin_Release(pin);
             return hr;
+        }
+        IPin_Release(pin);
     }
+    IEnumPins_Release(enumpins);
 
     return E_INVALIDARG;
 }




More information about the wine-cvs mailing list