forked from Mirrors/wine-wine
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
parent
952f194539
commit
1371838deb
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue