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@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Zebediah Figura 2020-04-08 15:58:55 -05:00 committed by Alexandre Julliard
parent 952f194539
commit 1371838deb
1 changed files with 12 additions and 6 deletions

View File

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