[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