[1/2] quartz: Disconnect pins when their filter is removed
Chris Robinson
chris.kcat at gmail.com
Wed Mar 14 09:24:00 CDT 2007
-------------- next part --------------
From 0508656030b0d7c2ffa8496445268cfb2ec06afe Mon Sep 17 00:00:00 2001
From: Chris Robinson <chris.kcat at gmail.com>
Date: Wed, 14 Mar 2007 07:19:17 -0700
Subject: [PATCH] quartz: Disconnect pins when their filter is removed
---
dlls/quartz/filtergraph.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index 724feda..044ff01 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -416,7 +416,17 @@ static HRESULT WINAPI GraphBuilder_RemoveFilter(IGraphBuilder *iface,
{
if (This->ppFiltersInGraph[i] == pFilter)
{
- /* FIXME: disconnect pins */
+ IEnumPins *penumpins;
+ hr = IBaseFilter_EnumPins(pFilter, &penumpins);
+ if (SUCCEEDED(hr)) {
+ IPin *ppin;
+ while(IEnumPins_Next(penumpins, 1, &ppin, NULL) == S_OK) {
+ IPin_Disconnect(ppin);
+ IPin_Release(ppin);
+ }
+ IEnumPins_Release(penumpins);
+ }
+
hr = IBaseFilter_JoinFilterGraph(pFilter, NULL, This->pFilterNames[i]);
if (SUCCEEDED(hr))
{
--
1.4.4.4
More information about the wine-patches
mailing list