[PATCH 1/7] amstream: Rewrite OpenFile flow in a more readable manner by using SUCCEEDED macro.

Christian Costa titan.costa at gmail.com
Wed Mar 14 15:50:56 CDT 2012


---
 dlls/amstream/amstream.c |   65 +++++++++++++++++-----------------------------
 1 files changed, 24 insertions(+), 41 deletions(-)

diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c
index c771f77..78e2d0f 100644
--- a/dlls/amstream/amstream.c
+++ b/dlls/amstream/amstream.c
@@ -303,11 +303,11 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream
 
 static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* iface, LPCWSTR pszFileName, DWORD dwFlags)
 {
-    HRESULT ret;
     IAMMultiMediaStreamImpl *This = impl_from_IAMMultiMediaStream(iface);
-    IFileSourceFilter *SourceFilter;
-    IBaseFilter *BaseFilter;
-    IEnumPins *EnumPins;
+    HRESULT ret = S_OK;
+    IFileSourceFilter *SourceFilter = NULL;
+    IBaseFilter *BaseFilter = NULL;
+    IEnumPins *EnumPins = NULL;
     IPin *ipin;
     PIN_DIRECTION pin_direction;
 
@@ -315,56 +315,39 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* ifac
 
     /* If Initialize was not called before, we do it here */
     if (!This->pFilterGraph)
-    {
         ret = IAMMultiMediaStream_Initialize(iface, STREAMTYPE_READ, 0, NULL);
-        if (FAILED(ret))
-            return ret;
-    }
 
-    ret = CoCreateInstance(&CLSID_AsyncReader, NULL, CLSCTX_INPROC_SERVER, &IID_IFileSourceFilter, (void**)&SourceFilter);
-    if(ret != S_OK)
-        return ret;
+    if (SUCCEEDED(ret)) 
+        ret = CoCreateInstance(&CLSID_AsyncReader, NULL, CLSCTX_INPROC_SERVER, &IID_IFileSourceFilter, (void**)&SourceFilter);
 
-    ret = IGraphBuilder_AddSourceFilter(This->pFilterGraph, pszFileName, pszFileName, &BaseFilter);
-    if (FAILED(ret))
-        goto end;
+    if (SUCCEEDED(ret))
+        ret = IGraphBuilder_AddSourceFilter(This->pFilterGraph, pszFileName, pszFileName, &BaseFilter);
 
-    ret = IFileSourceFilter_Load(SourceFilter, pszFileName, NULL);
-    if(ret != S_OK)
-    {
-        IFileSourceFilter_Release(SourceFilter);
-        return ret;
-    }
+    if (SUCCEEDED(ret))
+        ret = IFileSourceFilter_Load(SourceFilter, pszFileName, NULL);
 
-    ret = IFileSourceFilter_QueryInterface(SourceFilter, &IID_IBaseFilter, (void**)&BaseFilter);
-    if(ret != S_OK)
-    {
-        IFileSourceFilter_Release(SourceFilter);
-        return ret;
-    }
+    if (SUCCEEDED(ret))
+        ret = IFileSourceFilter_QueryInterface(SourceFilter, &IID_IBaseFilter, (void**)&BaseFilter);
 
-    ret = IBaseFilter_EnumPins(BaseFilter, &EnumPins);
-    if(ret != S_OK)
-    {
-        goto end;
-    }
+    if (SUCCEEDED(ret))
+        ret = IBaseFilter_EnumPins(BaseFilter, &EnumPins);
+
+    if (SUCCEEDED(ret))
+        ret = IEnumPins_Next(EnumPins, 1, &ipin, NULL);
 
-    ret = IEnumPins_Next(EnumPins, 1, &ipin, NULL);
-    if (ret == S_OK)
+    if (SUCCEEDED(ret))
     {
         ret = IPin_QueryDirection(ipin, &pin_direction);
-        IEnumPins_Release(EnumPins);
         if (ret == S_OK && pin_direction == PINDIR_OUTPUT)
             This->ipin = ipin;
     }
-    else
-    {
-        IEnumPins_Release(EnumPins);
-    }
 
-end:
-    IBaseFilter_Release(BaseFilter);
-    IFileSourceFilter_Release(SourceFilter);
+    if (EnumPins)
+        IEnumPins_Release(EnumPins);
+    if (BaseFilter)
+        IBaseFilter_Release(BaseFilter);
+    if (SourceFilter)
+        IFileSourceFilter_Release(SourceFilter);
     return ret;
 }
 




More information about the wine-patches mailing list