Maarten Lankhorst : quartz: Make transform filter return hresult from running/pausing.

Alexandre Julliard julliard at winehq.org
Tue Jul 29 07:16:23 CDT 2008


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

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Tue Jul 22 04:09:55 2008 -0700

quartz: Make transform filter return hresult from running/pausing.

---

 dlls/quartz/transform.c |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/dlls/quartz/transform.c b/dlls/quartz/transform.c
index 322c76a..5c090c0 100644
--- a/dlls/quartz/transform.c
+++ b/dlls/quartz/transform.c
@@ -316,6 +316,7 @@ static HRESULT WINAPI TransformFilter_GetClassID(IBaseFilter * iface, CLSID * pC
 static HRESULT WINAPI TransformFilter_Stop(IBaseFilter * iface)
 {
     TransformFilterImpl *This = (TransformFilterImpl *)iface;
+    HRESULT hr = S_OK;
 
     TRACE("(%p/%p)\n", This, iface);
 
@@ -323,29 +324,33 @@ static HRESULT WINAPI TransformFilter_Stop(IBaseFilter * iface)
     {
         This->state = State_Stopped;
         if (This->pFuncsTable->pfnProcessEnd)
-            This->pFuncsTable->pfnProcessEnd(This);
+            hr = This->pFuncsTable->pfnProcessEnd(This);
     }
     LeaveCriticalSection(&This->csFilter);
 
-    return S_OK;
+    return hr;
 }
 
 static HRESULT WINAPI TransformFilter_Pause(IBaseFilter * iface)
 {
     TransformFilterImpl *This = (TransformFilterImpl *)iface;
+    HRESULT hr;
 
     TRACE("(%p/%p)->()\n", This, iface);
 
     EnterCriticalSection(&This->csFilter);
     {
         if (This->state == State_Stopped)
-            IBaseFilter_Run(iface, -1);
+            hr = IBaseFilter_Run(iface, -1);
+        else
+            hr = S_OK;
 
-        This->state = State_Paused;
+        if (SUCCEEDED(hr))
+            This->state = State_Paused;
     }
     LeaveCriticalSection(&This->csFilter);
 
-    return S_OK;
+    return hr;
 }
 
 static HRESULT WINAPI TransformFilter_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
@@ -361,12 +366,16 @@ static HRESULT WINAPI TransformFilter_Run(IBaseFilter * iface, REFERENCE_TIME tS
         {
             ((InputPin *)This->ppPins[0])->end_of_stream = 0;
             if (This->pFuncsTable->pfnProcessBegin)
-                This->pFuncsTable->pfnProcessBegin(This);
-            OutputPin_CommitAllocator((OutputPin *)This->ppPins[1]);
+                hr = This->pFuncsTable->pfnProcessBegin(This);
+            if (SUCCEEDED(hr))
+                hr = OutputPin_CommitAllocator((OutputPin *)This->ppPins[1]);
         }
 
-        This->rtStreamStart = tStart;
-        This->state = State_Running;
+        if (SUCCEEDED(hr))
+        {
+            This->rtStreamStart = tStart;
+            This->state = State_Running;
+        }
     }
     LeaveCriticalSection(&This->csFilter);
 




More information about the wine-cvs mailing list