From d3c5b2c4f16cfa33343115846e9344de1fb62d97 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Sat, 24 Mar 2012 11:43:09 -0500 Subject: [PATCH] strmbase: COM cleanup for cleanup SourceSeeking. --- dlls/quartz/avisplit.c | 2 +- dlls/quartz/mpegsplit.c | 2 +- dlls/quartz/parser.c | 2 +- dlls/quartz/waveparser.c | 2 +- dlls/strmbase/seeking.c | 35 ++++++++++++++++++++--------------- dlls/winegstreamer/gstdemux.c | 2 +- dlls/wineqtdecoder/qtsplitter.c | 2 +- include/wine/strmbase.h | 2 +- 8 files changed, 27 insertions(+), 22 deletions(-) diff --git a/dlls/quartz/avisplit.c b/dlls/quartz/avisplit.c index 3a50de542cb..bcfdeb1a5bc 100644 --- a/dlls/quartz/avisplit.c +++ b/dlls/quartz/avisplit.c @@ -102,7 +102,7 @@ struct thread_args { static inline AVISplitterImpl *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (AVISplitterImpl *)((char*)iface - FIELD_OFFSET(AVISplitterImpl, Parser.sourceSeeking.lpVtbl)); + return CONTAINING_RECORD(iface, AVISplitterImpl, Parser.sourceSeeking.IMediaSeeking_iface); } /* The threading stuff cries for an explanation diff --git a/dlls/quartz/mpegsplit.c b/dlls/quartz/mpegsplit.c index acb72edb3e4..f2e113872e4 100644 --- a/dlls/quartz/mpegsplit.c +++ b/dlls/quartz/mpegsplit.c @@ -78,7 +78,7 @@ typedef struct MPEGSplitterImpl static inline MPEGSplitterImpl *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (MPEGSplitterImpl *)((char*)iface - FIELD_OFFSET(MPEGSplitterImpl, Parser.sourceSeeking.lpVtbl)); + return CONTAINING_RECORD(iface, MPEGSplitterImpl, Parser.sourceSeeking.IMediaSeeking_iface); } static int MPEGSplitter_head_check(const BYTE *header) diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index 784c5282580..c1d041a614b 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -50,7 +50,7 @@ static HRESULT WINAPI Parser_OutputPin_BreakConnect(BaseOutputPin *This); static inline ParserImpl *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (ParserImpl *)((char*)iface - FIELD_OFFSET(ParserImpl, sourceSeeking.lpVtbl)); + return CONTAINING_RECORD(iface, ParserImpl, sourceSeeking.IMediaSeeking_iface); } /* FIXME: WRONG */ diff --git a/dlls/quartz/waveparser.c b/dlls/quartz/waveparser.c index a1b58e53a92..bc0615ee331 100644 --- a/dlls/quartz/waveparser.c +++ b/dlls/quartz/waveparser.c @@ -50,7 +50,7 @@ typedef struct WAVEParserImpl static inline WAVEParserImpl *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (WAVEParserImpl*)((char*)iface - FIELD_OFFSET(WAVEParserImpl, Parser.sourceSeeking.lpVtbl)); + return CONTAINING_RECORD(iface, WAVEParserImpl, Parser.sourceSeeking.IMediaSeeking_iface); } static LONGLONG bytepos_to_duration(WAVEParserImpl *This, LONGLONG bytepos) diff --git a/dlls/strmbase/seeking.c b/dlls/strmbase/seeking.c index f03dde6a6fb..c31699c2099 100644 --- a/dlls/strmbase/seeking.c +++ b/dlls/strmbase/seeking.c @@ -32,11 +32,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(strmbase); +static inline SourceSeeking *impl_from_IMediaSeeking(IMediaSeeking *iface) +{ + return CONTAINING_RECORD(iface, SourceSeeking, IMediaSeeking_iface); +} + HRESULT SourceSeeking_Init(SourceSeeking *pSeeking, const IMediaSeekingVtbl *Vtbl, SourceSeeking_ChangeStop fnChangeStop, SourceSeeking_ChangeStart fnChangeStart, SourceSeeking_ChangeRate fnChangeRate, PCRITICAL_SECTION crit_sect) { assert(fnChangeStop && fnChangeStart && fnChangeRate); - pSeeking->lpVtbl = Vtbl; + pSeeking->IMediaSeeking_iface.lpVtbl = Vtbl; pSeeking->refCount = 1; pSeeking->fnChangeRate = fnChangeRate; pSeeking->fnChangeStop = fnChangeStop; @@ -57,7 +62,7 @@ HRESULT SourceSeeking_Init(SourceSeeking *pSeeking, const IMediaSeekingVtbl *Vtb HRESULT WINAPI SourceSeekingImpl_GetCapabilities(IMediaSeeking * iface, DWORD * pCapabilities) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p)\n", pCapabilities); @@ -68,7 +73,7 @@ HRESULT WINAPI SourceSeekingImpl_GetCapabilities(IMediaSeeking * iface, DWORD * HRESULT WINAPI SourceSeekingImpl_CheckCapabilities(IMediaSeeking * iface, DWORD * pCapabilities) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); HRESULT hr; DWORD dwCommonCaps; @@ -104,7 +109,7 @@ HRESULT WINAPI SourceSeekingImpl_QueryPreferredFormat(IMediaSeeking * iface, GUI HRESULT WINAPI SourceSeekingImpl_GetTimeFormat(IMediaSeeking * iface, GUID * pFormat) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%s)\n", debugstr_guid(pFormat)); EnterCriticalSection(This->crst); @@ -116,7 +121,7 @@ HRESULT WINAPI SourceSeekingImpl_GetTimeFormat(IMediaSeeking * iface, GUID * pFo HRESULT WINAPI SourceSeekingImpl_IsUsingTimeFormat(IMediaSeeking * iface, const GUID * pFormat) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); HRESULT hr = S_OK; TRACE("(%s)\n", debugstr_guid(pFormat)); @@ -131,7 +136,7 @@ HRESULT WINAPI SourceSeekingImpl_IsUsingTimeFormat(IMediaSeeking * iface, const HRESULT WINAPI SourceSeekingImpl_SetTimeFormat(IMediaSeeking * iface, const GUID * pFormat) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("%p %s\n", This, debugstr_guid(pFormat)); return (IsEqualIID(pFormat, &TIME_FORMAT_MEDIA_TIME) ? S_OK : E_INVALIDARG); } @@ -139,7 +144,7 @@ HRESULT WINAPI SourceSeekingImpl_SetTimeFormat(IMediaSeeking * iface, const GUID HRESULT WINAPI SourceSeekingImpl_GetDuration(IMediaSeeking * iface, LONGLONG * pDuration) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p)\n", pDuration); @@ -152,7 +157,7 @@ HRESULT WINAPI SourceSeekingImpl_GetDuration(IMediaSeeking * iface, LONGLONG * p HRESULT WINAPI SourceSeekingImpl_GetStopPosition(IMediaSeeking * iface, LONGLONG * pStop) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p)\n", pStop); @@ -166,7 +171,7 @@ HRESULT WINAPI SourceSeekingImpl_GetStopPosition(IMediaSeeking * iface, LONGLONG /* FIXME: Make use of the info the filter should expose */ HRESULT WINAPI SourceSeekingImpl_GetCurrentPosition(IMediaSeeking * iface, LONGLONG * pCurrent) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p)\n", pCurrent); @@ -179,7 +184,7 @@ HRESULT WINAPI SourceSeekingImpl_GetCurrentPosition(IMediaSeeking * iface, LONGL HRESULT WINAPI SourceSeekingImpl_ConvertTimeFormat(IMediaSeeking * iface, LONGLONG * pTarget, const GUID * pTargetFormat, LONGLONG Source, const GUID * pSourceFormat) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); if (!pTargetFormat) pTargetFormat = &This->timeformat; if (!pSourceFormat) @@ -212,7 +217,7 @@ static inline LONGLONG Adjust(LONGLONG value, const LONGLONG * pModifier, DWORD HRESULT WINAPI SourceSeekingImpl_SetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); BOOL bChangeCurrent = FALSE, bChangeStop = FALSE; LONGLONG llNewCurrent, llNewStop; @@ -248,7 +253,7 @@ HRESULT WINAPI SourceSeekingImpl_SetPositions(IMediaSeeking * iface, LONGLONG * HRESULT WINAPI SourceSeekingImpl_GetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, LONGLONG * pStop) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p, %p)\n", pCurrent, pStop); @@ -262,7 +267,7 @@ HRESULT WINAPI SourceSeekingImpl_GetPositions(IMediaSeeking * iface, LONGLONG * HRESULT WINAPI SourceSeekingImpl_GetAvailable(IMediaSeeking * iface, LONGLONG * pEarliest, LONGLONG * pLatest) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p, %p)\n", pEarliest, pLatest); @@ -276,7 +281,7 @@ HRESULT WINAPI SourceSeekingImpl_GetAvailable(IMediaSeeking * iface, LONGLONG * HRESULT WINAPI SourceSeekingImpl_SetRate(IMediaSeeking * iface, double dRate) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); BOOL bChangeRate = (dRate != This->dRate); HRESULT hr = S_OK; @@ -299,7 +304,7 @@ HRESULT WINAPI SourceSeekingImpl_SetRate(IMediaSeeking * iface, double dRate) HRESULT WINAPI SourceSeekingImpl_GetRate(IMediaSeeking * iface, double * dRate) { - SourceSeeking *This = (SourceSeeking *)iface; + SourceSeeking *This = impl_from_IMediaSeeking(iface); TRACE("(%p)\n", dRate); diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index e42ad0455cd..730634dc7e1 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -998,7 +998,7 @@ static HRESULT GST_Connect(GSTInPin *pPin, IPin *pConnectPin, ALLOCATOR_PROPERTI } static inline GSTOutPin *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (GSTOutPin *)((char*)iface - FIELD_OFFSET(GSTOutPin, seek.lpVtbl)); + return CONTAINING_RECORD(iface, GSTOutPin, seek.IMediaSeeking_iface); } static IPin* WINAPI GST_GetPin(BaseFilter *iface, int pos) diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c index 78b8bf26ca2..bacf2af95b4 100644 --- a/dlls/wineqtdecoder/qtsplitter.c +++ b/dlls/wineqtdecoder/qtsplitter.c @@ -185,7 +185,7 @@ static HRESULT WINAPI QTSplitter_ChangeRate(IMediaSeeking *iface); static inline QTSplitter *impl_from_IMediaSeeking( IMediaSeeking *iface ) { - return (QTSplitter *)((char*)iface - FIELD_OFFSET(QTSplitter, sourceSeeking.lpVtbl)); + return CONTAINING_RECORD(iface, QTSplitter, sourceSeeking.IMediaSeeking_iface); } /* diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 72686ac50d6..4944e349751 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -287,7 +287,7 @@ typedef HRESULT (WINAPI *SourceSeeking_ChangeStop)(IMediaSeeking *iface); typedef struct SourceSeeking { - const IMediaSeekingVtbl * lpVtbl; + IMediaSeeking IMediaSeeking_iface; ULONG refCount; SourceSeeking_ChangeStop fnChangeStop; -- 2.11.4.GIT