From b3c4d6eee63b53da1e29b757645b11794e15d975 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 30 Mar 2007 05:36:21 -0700 Subject: [PATCH] quartz: Remove errant parser output pins on input connection failure. --- dlls/quartz/parser.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index e1f2c628fc3..01d215f3936 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -762,13 +762,32 @@ static HRESULT WINAPI Parser_InputPin_Disconnect(IPin * iface) return hr; } +HRESULT WINAPI Parser_PullPin_ReceiveConnection(IPin * iface, IPin * pReceivePin, const AM_MEDIA_TYPE * pmt) +{ + HRESULT hr; + + TRACE("()\n"); + + hr = PullPin_ReceiveConnection(iface, pReceivePin, pmt); + if (FAILED(hr)) + { + IPinImpl *This = (IPinImpl *)iface; + + EnterCriticalSection(This->pCritSec); + Parser_RemoveOutputPins((ParserImpl *)This->pinInfo.pFilter); + LeaveCriticalSection(This->pCritSec); + } + + return hr; +} + static const IPinVtbl Parser_InputPin_Vtbl = { PullPin_QueryInterface, IPinImpl_AddRef, PullPin_Release, OutputPin_Connect, - PullPin_ReceiveConnection, + Parser_PullPin_ReceiveConnection, Parser_InputPin_Disconnect, IPinImpl_ConnectedTo, IPinImpl_ConnectionMediaType,