quartz: Remove the source filter on failure in IGraphBuilder::RenderFile().
Signed-off-by: Tim Clem <tclem@codeweavers.com> Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d9b95ac0df
commit
83ae1ff59a
|
@ -1431,11 +1431,19 @@ static HRESULT WINAPI FilterGraph2_RenderFile(IFilterGraph2 *iface, LPCWSTR lpcw
|
||||||
IEnumPins_Release(penumpins);
|
IEnumPins_Release(penumpins);
|
||||||
|
|
||||||
if (!any)
|
if (!any)
|
||||||
|
{
|
||||||
|
if (FAILED(hr = IFilterGraph2_RemoveFilter(iface, preader)))
|
||||||
|
ERR("Failed to remove source filter, hr %#x.\n", hr);
|
||||||
hr = VFW_E_CANNOT_RENDER;
|
hr = VFW_E_CANNOT_RENDER;
|
||||||
|
}
|
||||||
else if (partial)
|
else if (partial)
|
||||||
|
{
|
||||||
hr = VFW_S_PARTIAL_RENDER;
|
hr = VFW_S_PARTIAL_RENDER;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
IBaseFilter_Release(preader);
|
IBaseFilter_Release(preader);
|
||||||
|
|
||||||
|
|
|
@ -4216,17 +4216,17 @@ static void test_renderfile_failure(void)
|
||||||
|
|
||||||
hr = IEnumFilters_Next(filterenum, 1, &filter, NULL);
|
hr = IEnumFilters_Next(filterenum, 1, &filter, NULL);
|
||||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||||
todo_wine ok(filter == &testfilter.IBaseFilter_iface, "Got unexpected filter %p.\n", filter);
|
ok(filter == &testfilter.IBaseFilter_iface, "Got unexpected filter %p.\n", filter);
|
||||||
|
|
||||||
hr = IEnumFilters_Next(filterenum, 1, &filter, NULL);
|
hr = IEnumFilters_Next(filterenum, 1, &filter, NULL);
|
||||||
todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
|
ok(hr == S_FALSE, "Got hr %#x.\n", hr);
|
||||||
|
|
||||||
IEnumFilters_Release(filterenum);
|
IEnumFilters_Release(filterenum);
|
||||||
|
|
||||||
ref = IFilterGraph2_Release(graph);
|
ref = IFilterGraph2_Release(graph);
|
||||||
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
ok(!ref, "Got outstanding refcount %d.\n", ref);
|
||||||
ret = DeleteFileW(filename);
|
ret = DeleteFileW(filename);
|
||||||
todo_wine ok(ret, "Failed to delete %s, error %u.\n", debugstr_w(filename), GetLastError());
|
ok(ret, "Failed to delete %s, error %u.\n", debugstr_w(filename), GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove and re-add the filter, to flush the graph's internal
|
/* Remove and re-add the filter, to flush the graph's internal
|
||||||
|
|
Loading…
Reference in New Issue