[PATCH v4 3/3] quartz: Remove the source filter on failure in IGraphBuilder::RenderFile().
Zebediah Figura
z.figura12 at gmail.com
Tue Jun 29 14:59:58 CDT 2021
From: Tim Clem <tclem at codeweavers.com>
Signed-off-by: Tim Clem <tclem at codeweavers.com>
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
v4: Reformat a bit.
dlls/quartz/filtergraph.c | 8 ++++++++
dlls/quartz/tests/filtergraph.c | 6 +++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index f509bdad332..4861d6cf1b0 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -1431,11 +1431,19 @@ static HRESULT WINAPI FilterGraph2_RenderFile(IFilterGraph2 *iface, LPCWSTR lpcw
IEnumPins_Release(penumpins);
if (!any)
+ {
+ if (FAILED(hr = IFilterGraph2_RemoveFilter(iface, preader)))
+ ERR("Failed to remove source filter, hr %#x.\n", hr);
hr = VFW_E_CANNOT_RENDER;
+ }
else if (partial)
+ {
hr = VFW_S_PARTIAL_RENDER;
+ }
else
+ {
hr = S_OK;
+ }
}
IBaseFilter_Release(preader);
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c
index 557b3965016..fef7b972fac 100644
--- a/dlls/quartz/tests/filtergraph.c
+++ b/dlls/quartz/tests/filtergraph.c
@@ -4216,17 +4216,17 @@ static void test_renderfile_failure(void)
hr = IEnumFilters_Next(filterenum, 1, &filter, NULL);
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);
- todo_wine ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+ ok(hr == S_FALSE, "Got hr %#x.\n", hr);
IEnumFilters_Release(filterenum);
ref = IFilterGraph2_Release(graph);
ok(!ref, "Got outstanding refcount %d.\n", ref);
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
--
2.30.2
More information about the wine-devel
mailing list