Chris Robinson : quartz: Disconnect pins when their filter is removed.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Mar 19 08:17:40 CDT 2007


Module: wine
Branch: master
Commit: 54f4a4a779dd534f900586c7eed640d0e07ceafe
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=54f4a4a779dd534f900586c7eed640d0e07ceafe

Author: Chris Robinson <chris.kcat at gmail.com>
Date:   Wed Mar 14 07:19:17 2007 -0700

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))
             {




More information about the wine-cvs mailing list