Module: wine Branch: master Commit: 54f4a4a779dd534f900586c7eed640d0e07ceafe URL: http://source.winehq.org/git/wine.git/?a=commit;h=54f4a4a779dd534f900586c7ee...
Author: Chris Robinson chris.kcat@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)) {