[PATCH v3 2/2] quartz: Remove source filter added by IGraphBuilder::RenderFile on failure
Tim Clem
tclem at codeweavers.com
Mon Jun 28 18:03:35 CDT 2021
Signed-off-by: Tim Clem <tclem at codeweavers.com>
---
dlls/quartz/filtergraph.c | 7 ++++++-
dlls/quartz/tests/filtergraph.c | 6 +++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index f509bdad332..026b9cb8f72 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -1430,8 +1430,13 @@ static HRESULT WINAPI FilterGraph2_RenderFile(IFilterGraph2 *iface, LPCWSTR lpcw
}
IEnumPins_Release(penumpins);
- if (!any)
+ if (!any) {
+ hr = IFilterGraph2_RemoveFilter(iface, preader);
+ if (FAILED(hr)) {
+ WARN("Unable to remove reader for unplayable source, hr: %#x\n", hr);
+ }
hr = VFW_E_CANNOT_RENDER;
+ }
else if (partial)
hr = VFW_S_PARTIAL_RENDER;
else
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c
index f0d7d7c275e..b0de269647d 100644
--- a/dlls/quartz/tests/filtergraph.c
+++ b/dlls/quartz/tests/filtergraph.c
@@ -4214,15 +4214,15 @@ 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);
IFilterGraph2_Release(graph);
- todo_wine ok(DeleteFileW(filename), "Failed to delete temporary file.\n");
+ ok(DeleteFileW(filename), "Failed to delete temporary file.\n");
}
/* Remove and re-add the filter, to flush the graph's internal
--
2.32.0
More information about the wine-devel
mailing list