Chris Robinson : quartz: Remove errant parser output pins on input connection failure.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Apr 2 06:22:54 CDT 2007


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

Author: Chris Robinson <chris.kcat at gmail.com>
Date:   Fri Mar 30 05:36:21 2007 -0700

quartz: Remove errant parser output pins on input connection failure.

---

 dlls/quartz/parser.c |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c
index e1f2c62..01d215f 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,




More information about the wine-cvs mailing list