[PATCH 3/4] wineqtdecoder: Make QTOutPin_BreakConnect() a local helper.

Zebediah Figura z.figura12 at gmail.com
Sat May 11 14:46:20 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/wineqtdecoder/qtsplitter.c | 44 ++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c
index 33edf25e12..cd146dbfb0 100644
--- a/dlls/wineqtdecoder/qtsplitter.c
+++ b/dlls/wineqtdecoder/qtsplitter.c
@@ -810,6 +810,25 @@ static const IBaseFilterVtbl QT_Vtbl = {
     BaseFilterImpl_QueryVendorInfo
 };
 
+static HRESULT break_source_connection(BaseOutputPin *pin)
+{
+    HRESULT hr;
+
+    EnterCriticalSection(pin->pin.pCritSec);
+    if (!pin->pin.pConnectedTo || !pin->pMemInputPin)
+        hr = VFW_E_NOT_CONNECTED;
+    else
+    {
+        hr = IMemAllocator_Decommit(pin->pAllocator);
+        if (SUCCEEDED(hr))
+            hr = IPin_Disconnect(pin->pin.pConnectedTo);
+        IPin_Disconnect(&pin->pin.IPin_iface);
+    }
+    LeaveCriticalSection(pin->pin.pCritSec);
+
+    return hr;
+}
+
 /*
  * Input Pin
  */
@@ -821,7 +840,7 @@ static HRESULT QT_RemoveOutputPins(QTSplitter *This)
     if (This->pVideo_Pin)
     {
         OutputQueue_Destroy(This->pVideo_Pin->queue);
-        hr = BaseOutputPinImpl_BreakConnect(&This->pVideo_Pin->pin);
+        hr = break_source_connection(&This->pVideo_Pin->pin);
         TRACE("Disconnect: %08x\n", hr);
         IPin_Release(&This->pVideo_Pin->pin.pin.IPin_iface);
         This->pVideo_Pin = NULL;
@@ -829,7 +848,7 @@ static HRESULT QT_RemoveOutputPins(QTSplitter *This)
     if (This->pAudio_Pin)
     {
         OutputQueue_Destroy(This->pAudio_Pin->queue);
-        hr = BaseOutputPinImpl_BreakConnect(&This->pAudio_Pin->pin);
+        hr = break_source_connection(&This->pAudio_Pin->pin);
         TRACE("Disconnect: %08x\n", hr);
         IPin_Release(&This->pAudio_Pin->pin.pin.IPin_iface);
         This->pAudio_Pin = NULL;
@@ -1426,25 +1445,6 @@ static HRESULT WINAPI QTOutPin_DecideAllocator(BaseOutputPin *iface, IMemInputPi
     return hr;
 }
 
-static HRESULT WINAPI QTOutPin_BreakConnect(BaseOutputPin *This)
-{
-    HRESULT hr;
-
-    TRACE("(%p)->()\n", This);
-
-    EnterCriticalSection(This->pin.pCritSec);
-    if (!This->pin.pConnectedTo || !This->pMemInputPin)
-        hr = VFW_E_NOT_CONNECTED;
-    else
-    {
-        hr = IPin_Disconnect(This->pin.pConnectedTo);
-        IPin_Disconnect(&This->pin.IPin_iface);
-    }
-    LeaveCriticalSection(This->pin.pCritSec);
-
-    return hr;
-}
-
 static const IPinVtbl QT_OutputPin_Vtbl = {
     QTOutPin_QueryInterface,
     BasePinImpl_AddRef,
@@ -1520,7 +1520,7 @@ static const BaseOutputPinFuncTable output_BaseOutputFuncTable = {
     BaseOutputPinImpl_AttemptConnection,
     QTOutPin_DecideBufferSize,
     QTOutPin_DecideAllocator,
-    QTOutPin_BreakConnect
+    NULL,
 };
 
 static const OutputQueueFuncTable output_OutputQueueFuncTable = {
-- 
2.21.0




More information about the wine-devel mailing list