Aric Stewart : quartz: COM cleanup for ParserImpl.

Alexandre Julliard julliard at winehq.org
Thu May 24 14:58:13 CDT 2012


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon May 21 08:21:48 2012 -0500

quartz: COM cleanup for ParserImpl.

---

 dlls/quartz/parser.c |   58 +++++++++++++++++++++++++++++--------------------
 1 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c
index 9b33e05..da9b4b1 100644
--- a/dlls/quartz/parser.c
+++ b/dlls/quartz/parser.c
@@ -53,10 +53,20 @@ static inline ParserImpl *impl_from_IMediaSeeking( IMediaSeeking *iface )
     return CONTAINING_RECORD(iface, ParserImpl, sourceSeeking.IMediaSeeking_iface);
 }
 
+static inline ParserImpl *impl_from_IBaseFilter( IBaseFilter *iface )
+{
+    return CONTAINING_RECORD(iface, ParserImpl, filter.IBaseFilter_iface);
+}
+
+static inline ParserImpl *impl_from_BaseFilter( BaseFilter *iface )
+{
+    return CONTAINING_RECORD(iface, ParserImpl, filter);
+}
+
 /* FIXME: WRONG */
 static IPin* WINAPI Parser_GetPin(BaseFilter *iface, int pos)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_BaseFilter(iface);
 
     TRACE("Asking for pos %x\n", pos);
 
@@ -70,7 +80,7 @@ static IPin* WINAPI Parser_GetPin(BaseFilter *iface, int pos)
 
 static LONG WINAPI Parser_GetPinCount(BaseFilter *iface)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_BaseFilter(iface);
 
     return This->cStreams;
 }
@@ -95,7 +105,7 @@ HRESULT Parser_Create(ParserImpl* pParser, const IBaseFilterVtbl *Parser_Vtbl, c
 
     /* construct input pin */
     piInput.dir = PINDIR_INPUT;
-    piInput.pFilter = (IBaseFilter *)pParser;
+    piInput.pFilter = &pParser->filter.IBaseFilter_iface;
     lstrcpynW(piInput.achName, wcsInputPinName, sizeof(piInput.achName) / sizeof(piInput.achName[0]));
 
     if (!start)
@@ -119,7 +129,7 @@ HRESULT Parser_Create(ParserImpl* pParser, const IBaseFilterVtbl *Parser_Vtbl, c
     else
     {
         CoTaskMemFree(pParser->ppPins);
-        BaseFilterImpl_Release((IBaseFilter*)pParser);
+        BaseFilterImpl_Release(&pParser->filter.IBaseFilter_iface);
         CoTaskMemFree(pParser);
     }
 
@@ -128,7 +138,7 @@ HRESULT Parser_Create(ParserImpl* pParser, const IBaseFilterVtbl *Parser_Vtbl, c
 
 HRESULT WINAPI Parser_QueryInterface(IBaseFilter * iface, REFIID riid, LPVOID * ppv)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     TRACE("(%s, %p)\n", qzdebugstr_guid(riid), ppv);
 
     *ppv = NULL;
@@ -191,7 +201,7 @@ void Parser_Destroy(ParserImpl *This)
 
 ULONG WINAPI Parser_Release(IBaseFilter * iface)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     ULONG refCount = BaseFilterImpl_Release(iface);
 
     TRACE("(%p)->() Release from %d\n", This, refCount + 1);
@@ -206,7 +216,7 @@ ULONG WINAPI Parser_Release(IBaseFilter * iface)
 
 HRESULT WINAPI Parser_GetClassID(IBaseFilter * iface, CLSID * pClsid)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
 
     TRACE("(%p)\n", pClsid);
 
@@ -219,7 +229,7 @@ HRESULT WINAPI Parser_GetClassID(IBaseFilter * iface, CLSID * pClsid)
 
 HRESULT WINAPI Parser_Stop(IBaseFilter * iface)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
     ULONG i;
 
@@ -258,7 +268,7 @@ HRESULT WINAPI Parser_Stop(IBaseFilter * iface)
 HRESULT WINAPI Parser_Pause(IBaseFilter * iface)
 {
     HRESULT hr = S_OK;
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
 
     TRACE("()\n");
@@ -292,7 +302,7 @@ HRESULT WINAPI Parser_Pause(IBaseFilter * iface)
 HRESULT WINAPI Parser_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
 {
     HRESULT hr = S_OK;
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
 
     ULONG i;
@@ -339,7 +349,7 @@ HRESULT WINAPI Parser_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
 
 HRESULT WINAPI Parser_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
     HRESULT hr = S_OK;
 
@@ -361,7 +371,7 @@ HRESULT WINAPI Parser_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FI
 
 HRESULT WINAPI Parser_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock)
 {
-    ParserImpl *This = (ParserImpl *)iface;
+    ParserImpl *This = impl_from_IBaseFilter(iface);
     PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
 
     TRACE("(%p)\n", pClock);
@@ -445,7 +455,7 @@ HRESULT Parser_AddPin(ParserImpl * This, const PIN_INFO * piOutput, ALLOCATOR_PR
         pin->pin.pin.pinInfo.pFilter = (LPVOID)This;
         pin->allocProps = *props;
         This->cStreams++;
-        BaseFilterImpl_IncrementPinVersion((BaseFilter*)This);
+        BaseFilterImpl_IncrementPinVersion(&This->filter);
         CoTaskMemFree(ppOldPins);
     }
     else
@@ -478,7 +488,7 @@ static HRESULT Parser_RemoveOutputPins(ParserImpl * This)
         IPin_Release(ppOldPins[i + 1]);
     }
 
-    BaseFilterImpl_IncrementPinVersion((BaseFilter*)This);
+    BaseFilterImpl_IncrementPinVersion(&This->filter);
     This->cStreams = 0;
     CoTaskMemFree(ppOldPins);
 
@@ -551,7 +561,7 @@ static const IMediaSeekingVtbl Parser_Seeking_Vtbl =
 
 static HRESULT WINAPI Parser_OutputPin_DecideBufferSize(BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
 {
-    Parser_OutputPin *This = (Parser_OutputPin *)iface;
+    Parser_OutputPin *This = (Parser_OutputPin*)iface;
     ALLOCATOR_PROPERTIES actual;
 
     if (ppropInputRequest->cbAlign && ppropInputRequest->cbAlign != This->allocProps.cbAlign)
@@ -568,7 +578,7 @@ static HRESULT WINAPI Parser_OutputPin_DecideBufferSize(BaseOutputPin *iface, IM
 
 static HRESULT WINAPI Parser_OutputPin_GetMediaType(BasePin *iface, int iPosition, AM_MEDIA_TYPE *pmt)
 {
-    Parser_OutputPin *This = (Parser_OutputPin *)iface;
+    Parser_OutputPin *This = (Parser_OutputPin*)iface;
     if (iPosition < 0)
         return E_INVALIDARG;
     if (iPosition > 0)
@@ -579,7 +589,7 @@ static HRESULT WINAPI Parser_OutputPin_GetMediaType(BasePin *iface, int iPositio
 
 static HRESULT WINAPI Parser_OutputPin_DecideAllocator(BaseOutputPin *iface, IMemInputPin *pPin, IMemAllocator **pAlloc)
 {
-    Parser_OutputPin *This = (Parser_OutputPin *)iface;
+    Parser_OutputPin *This = (Parser_OutputPin*)iface;
     HRESULT hr;
 
     *pAlloc = NULL;
@@ -604,7 +614,7 @@ static HRESULT WINAPI Parser_OutputPin_BreakConnect(BaseOutputPin *This)
     else
     {
         hr = IPin_Disconnect(This->pin.pConnectedTo);
-        IPin_Disconnect((IPin *)This);
+        IPin_Disconnect(&This->pin.IPin_iface);
     }
     LeaveCriticalSection(This->pin.pCritSec);
 
@@ -626,7 +636,7 @@ static HRESULT WINAPI Parser_OutputPin_QueryInterface(IPin * iface, REFIID riid,
         *ppv = iface;
     /* The Parser filter does not support querying IMediaSeeking, return it directly */
     else if (IsEqualIID(riid, &IID_IMediaSeeking))
-        *ppv = &((ParserImpl*)This->pin.pin.pinInfo.pFilter)->sourceSeeking;
+        *ppv = &impl_from_IBaseFilter(This->pin.pin.pinInfo.pFilter)->sourceSeeking;
 
     if (*ppv)
     {
@@ -660,7 +670,7 @@ static ULONG WINAPI Parser_OutputPin_Release(IPin * iface)
 static HRESULT WINAPI Parser_OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDIA_TYPE * pmt)
 {
     Parser_OutputPin *This = unsafe_impl_Parser_OutputPin_from_IPin(iface);
-    ParserImpl *parser = (ParserImpl *)This->pin.pin.pinInfo.pFilter;
+    ParserImpl *parser = impl_from_IBaseFilter(This->pin.pin.pinInfo.pFilter);
 
     /* Set the allocator to our input pin's */
     EnterCriticalSection(This->pin.pin.pCritSec);
@@ -716,7 +726,7 @@ static HRESULT WINAPI Parser_PullPin_QueryInterface(IPin * iface, REFIID riid, L
      * querying IMediaSeeking
      */
     if (IsEqualIID(riid, &IID_IMediaSeeking))
-        *ppv = &((ParserImpl*)This->pin.pinInfo.pFilter)->sourceSeeking;
+        *ppv = &impl_from_IBaseFilter(This->pin.pinInfo.pFilter)->sourceSeeking;
 
     if (*ppv)
     {
@@ -740,7 +750,7 @@ static HRESULT WINAPI Parser_PullPin_Disconnect(IPin * iface)
         if (This->pin.pConnectedTo)
         {
             FILTER_STATE state;
-            ParserImpl *Parser = (ParserImpl *)This->pin.pinInfo.pFilter;
+            ParserImpl *Parser = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
 
             LeaveCriticalSection(This->pin.pCritSec);
             hr = IBaseFilter_GetState(This->pin.pinInfo.pFilter, INFINITE, &state);
@@ -751,7 +761,7 @@ static HRESULT WINAPI Parser_PullPin_Disconnect(IPin * iface)
                 LeaveCriticalSection(This->pin.pCritSec);
                 PullPin_Disconnect(iface);
                 EnterCriticalSection(This->pin.pCritSec);
-                hr = Parser_RemoveOutputPins((ParserImpl *)This->pin.pinInfo.pFilter);
+                hr = Parser_RemoveOutputPins(impl_from_IBaseFilter(This->pin.pinInfo.pFilter));
             }
             else
                 hr = VFW_E_NOT_STOPPED;
@@ -777,7 +787,7 @@ static HRESULT WINAPI Parser_PullPin_ReceiveConnection(IPin * iface, IPin * pRec
         BasePin *This = (BasePin *)iface;
 
         EnterCriticalSection(This->pCritSec);
-        Parser_RemoveOutputPins((ParserImpl *)This->pinInfo.pFilter);
+        Parser_RemoveOutputPins(impl_from_IBaseFilter(This->pinInfo.pFilter));
         LeaveCriticalSection(This->pCritSec);
     }
 




More information about the wine-cvs mailing list