strmbase: COM cleanup for PosPassThru.

This commit is contained in:
Aric Stewart 2012-04-02 08:38:47 -05:00 committed by Alexandre Julliard
parent dbf910b053
commit 9846d02457
1 changed files with 69 additions and 56 deletions

View File

@ -32,17 +32,15 @@
WINE_DEFAULT_DEBUG_CHANNEL(strmbase); WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
#define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl; static const IMediaSeekingVtbl IMediaSeekingPassThru_Vtbl;
typedef struct PassThruImpl { typedef struct PassThruImpl {
const ISeekingPassThruVtbl *IPassThru_vtbl; IUnknown IUnknown_inner;
const IUnknownVtbl *IInner_vtbl; ISeekingPassThru ISeekingPassThru_iface;
const IMediaSeekingVtbl *IMediaSeeking_vtbl; IMediaSeeking IMediaSeeking_iface;
LONG ref; LONG ref;
IUnknown * pUnkOuter; IUnknown * outer_unk;
IPin * pin; IPin * pin;
BOOL bUnkOuterValid; BOOL bUnkOuterValid;
BOOL bAggregatable; BOOL bAggregatable;
@ -52,10 +50,25 @@ typedef struct PassThruImpl {
REFERENCE_TIME time_earliest; REFERENCE_TIME time_earliest;
} PassThruImpl; } PassThruImpl;
static inline PassThruImpl *impl_from_IUnknown_inner(IUnknown *iface)
{
return CONTAINING_RECORD(iface, PassThruImpl, IUnknown_inner);
}
static inline PassThruImpl *impl_from_ISeekingPassThru(ISeekingPassThru *iface)
{
return CONTAINING_RECORD(iface, PassThruImpl, ISeekingPassThru_iface);
}
static inline PassThruImpl *impl_from_IMediaSeeking(IMediaSeeking *iface)
{
return CONTAINING_RECORD(iface, PassThruImpl, IMediaSeeking_iface);
}
static HRESULT WINAPI SeekInner_QueryInterface(IUnknown * iface, static HRESULT WINAPI SeekInner_QueryInterface(IUnknown * iface,
REFIID riid, REFIID riid,
LPVOID *ppvObj) { LPVOID *ppvObj) {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
TRACE("(%p)->(%s (%p), %p)\n", This, debugstr_guid(riid), riid, ppvObj); TRACE("(%p)->(%s (%p), %p)\n", This, debugstr_guid(riid), riid, ppvObj);
if (This->bAggregatable) if (This->bAggregatable)
@ -63,13 +76,13 @@ static HRESULT WINAPI SeekInner_QueryInterface(IUnknown * iface,
if (IsEqualGUID(&IID_IUnknown, riid)) if (IsEqualGUID(&IID_IUnknown, riid))
{ {
*ppvObj = &(This->IInner_vtbl); *ppvObj = &(This->IUnknown_inner);
TRACE(" returning IUnknown interface (%p)\n", *ppvObj); TRACE(" returning IUnknown interface (%p)\n", *ppvObj);
} else if (IsEqualGUID(&IID_ISeekingPassThru, riid)) { } else if (IsEqualGUID(&IID_ISeekingPassThru, riid)) {
*ppvObj = &(This->IPassThru_vtbl); *ppvObj = &(This->ISeekingPassThru_iface);
TRACE(" returning ISeekingPassThru interface (%p)\n", *ppvObj); TRACE(" returning ISeekingPassThru interface (%p)\n", *ppvObj);
} else if (IsEqualGUID(&IID_IMediaSeeking, riid)) { } else if (IsEqualGUID(&IID_IMediaSeeking, riid)) {
*ppvObj = &(This->IMediaSeeking_vtbl); *ppvObj = &(This->IMediaSeeking_iface);
TRACE(" returning IMediaSeeking interface (%p)\n", *ppvObj); TRACE(" returning IMediaSeeking interface (%p)\n", *ppvObj);
} else { } else {
*ppvObj = NULL; *ppvObj = NULL;
@ -82,7 +95,7 @@ static HRESULT WINAPI SeekInner_QueryInterface(IUnknown * iface,
} }
static ULONG WINAPI SeekInner_AddRef(IUnknown * iface) { static ULONG WINAPI SeekInner_AddRef(IUnknown * iface) {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
ULONG ref = InterlockedIncrement(&This->ref); ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p)->(): new ref = %d\n", This, ref); TRACE("(%p)->(): new ref = %d\n", This, ref);
@ -91,7 +104,7 @@ static ULONG WINAPI SeekInner_AddRef(IUnknown * iface) {
} }
static ULONG WINAPI SeekInner_Release(IUnknown * iface) { static ULONG WINAPI SeekInner_Release(IUnknown * iface) {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
ULONG ref = InterlockedDecrement(&This->ref); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p)->(): new ref = %d\n", This, ref); TRACE("(%p)->(): new ref = %d\n", This, ref);
@ -118,18 +131,18 @@ static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID
if (This->bAggregatable) if (This->bAggregatable)
This->bUnkOuterValid = TRUE; This->bUnkOuterValid = TRUE;
if (This->pUnkOuter) if (This->outer_unk)
{ {
if (This->bAggregatable) if (This->bAggregatable)
return IUnknown_QueryInterface(This->pUnkOuter, riid, ppv); return IUnknown_QueryInterface(This->outer_unk, riid, ppv);
if (IsEqualIID(riid, &IID_IUnknown)) if (IsEqualIID(riid, &IID_IUnknown))
{ {
HRESULT hr; HRESULT hr;
IUnknown_AddRef((IUnknown *)&(This->IInner_vtbl)); IUnknown_AddRef((IUnknown *)&(This->IUnknown_inner));
hr = IUnknown_QueryInterface((IUnknown *)&(This->IInner_vtbl), riid, ppv); hr = IUnknown_QueryInterface((IUnknown *)&(This->IUnknown_inner), riid, ppv);
IUnknown_Release((IUnknown *)&(This->IInner_vtbl)); IUnknown_Release((IUnknown *)&(This->IUnknown_inner));
This->bAggregatable = TRUE; This->bAggregatable = TRUE;
return hr; return hr;
} }
@ -138,26 +151,26 @@ static HRESULT SeekOuter_QueryInterface(PassThruImpl *This, REFIID riid, LPVOID
return E_NOINTERFACE; return E_NOINTERFACE;
} }
return IUnknown_QueryInterface((IUnknown *)&(This->IInner_vtbl), riid, ppv); return IUnknown_QueryInterface((IUnknown *)&(This->IUnknown_inner), riid, ppv);
} }
static ULONG SeekOuter_AddRef(PassThruImpl *This) static ULONG SeekOuter_AddRef(PassThruImpl *This)
{ {
if (This->pUnkOuter && This->bUnkOuterValid) if (This->outer_unk && This->bUnkOuterValid)
return IUnknown_AddRef(This->pUnkOuter); return IUnknown_AddRef(This->outer_unk);
return IUnknown_AddRef((IUnknown *)&(This->IInner_vtbl)); return IUnknown_AddRef((IUnknown *)&(This->IUnknown_inner));
} }
static ULONG SeekOuter_Release(PassThruImpl *This) static ULONG SeekOuter_Release(PassThruImpl *This)
{ {
if (This->pUnkOuter && This->bUnkOuterValid) if (This->outer_unk && This->bUnkOuterValid)
return IUnknown_Release(This->pUnkOuter); return IUnknown_Release(This->outer_unk);
return IUnknown_Release((IUnknown *)&(This->IInner_vtbl)); return IUnknown_Release((IUnknown *)&(This->IUnknown_inner));
} }
static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, REFIID riid, LPVOID *ppvObj) static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, REFIID riid, LPVOID *ppvObj)
{ {
ICOM_THIS_MULTI(PassThruImpl, IPassThru_vtbl, iface); PassThruImpl *This = impl_from_ISeekingPassThru(iface);
TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj); TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
@ -166,7 +179,7 @@ static HRESULT WINAPI SeekingPassThru_QueryInterface(ISeekingPassThru *iface, RE
static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface) static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IPassThru_vtbl, iface); PassThruImpl *This = impl_from_ISeekingPassThru(iface);
TRACE("(%p/%p)->()\n", This, iface); TRACE("(%p/%p)->()\n", This, iface);
@ -175,7 +188,7 @@ static ULONG WINAPI SeekingPassThru_AddRef(ISeekingPassThru *iface)
static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface) static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IPassThru_vtbl, iface); PassThruImpl *This = impl_from_ISeekingPassThru(iface);
TRACE("(%p/%p)->()\n", This, iface); TRACE("(%p/%p)->()\n", This, iface);
@ -184,7 +197,7 @@ static ULONG WINAPI SeekingPassThru_Release(ISeekingPassThru *iface)
static HRESULT WINAPI SeekingPassThru_Init(ISeekingPassThru *iface, BOOL renderer, IPin *pin) static HRESULT WINAPI SeekingPassThru_Init(ISeekingPassThru *iface, BOOL renderer, IPin *pin)
{ {
ICOM_THIS_MULTI(PassThruImpl, IPassThru_vtbl, iface); PassThruImpl *This = impl_from_ISeekingPassThru(iface);
TRACE("(%p/%p)->(%d, %p)\n", This, iface, renderer, pin); TRACE("(%p/%p)->(%d, %p)\n", This, iface, renderer, pin);
@ -229,12 +242,12 @@ HRESULT WINAPI PosPassThru_Construct(IUnknown *pUnkOuter, LPVOID *ppPassThru)
if (!fimpl) if (!fimpl)
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
fimpl->pUnkOuter = pUnkOuter; fimpl->outer_unk = pUnkOuter;
fimpl->bUnkOuterValid = FALSE; fimpl->bUnkOuterValid = FALSE;
fimpl->bAggregatable = FALSE; fimpl->bAggregatable = FALSE;
fimpl->IInner_vtbl = &IInner_VTable; fimpl->IUnknown_inner.lpVtbl = &IInner_VTable;
fimpl->IPassThru_vtbl = &ISeekingPassThru_Vtbl; fimpl->ISeekingPassThru_iface.lpVtbl = &ISeekingPassThru_Vtbl;
fimpl->IMediaSeeking_vtbl = &IMediaSeekingPassThru_Vtbl; fimpl->IMediaSeeking_iface.lpVtbl = &IMediaSeekingPassThru_Vtbl;
fimpl->ref = 1; fimpl->ref = 1;
fimpl->pin = NULL; fimpl->pin = NULL;
fimpl->timevalid = 0; fimpl->timevalid = 0;
@ -245,7 +258,7 @@ HRESULT WINAPI PosPassThru_Construct(IUnknown *pUnkOuter, LPVOID *ppPassThru)
static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj) static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppvObj)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj); TRACE("(%p/%p)->(%s (%p), %p)\n", This, iface, debugstr_guid(riid), riid, ppvObj);
@ -254,7 +267,7 @@ static HRESULT WINAPI MediaSeekingPassThru_QueryInterface(IMediaSeeking *iface,
static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface) static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
TRACE("(%p/%p)->()\n", iface, This); TRACE("(%p/%p)->()\n", iface, This);
@ -263,7 +276,7 @@ static ULONG WINAPI MediaSeekingPassThru_AddRef(IMediaSeeking *iface)
static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface) static ULONG WINAPI MediaSeekingPassThru_Release(IMediaSeeking *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
TRACE("(%p/%p)->()\n", iface, This); TRACE("(%p/%p)->()\n", iface, This);
@ -286,7 +299,7 @@ static HRESULT get_connected(PassThruImpl *This, IMediaSeeking **seek) {
static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking * iface, DWORD * pCapabilities) static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking * iface, DWORD * pCapabilities)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities); TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
@ -302,7 +315,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetCapabilities(IMediaSeeking * iface
static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking * iface, DWORD * pCapabilities) static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking * iface, DWORD * pCapabilities)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities); TRACE("(%p/%p)->(%p)\n", iface, This, pCapabilities);
@ -318,7 +331,7 @@ static HRESULT WINAPI MediaSeekingPassThru_CheckCapabilities(IMediaSeeking * ifa
static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking * iface, const GUID * pFormat) static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking * iface, const GUID * pFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat)); TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
@ -334,7 +347,7 @@ static HRESULT WINAPI MediaSeekingPassThru_IsFormatSupported(IMediaSeeking * ifa
static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking * iface, GUID * pFormat) static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking * iface, GUID * pFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pFormat); TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
@ -350,7 +363,7 @@ static HRESULT WINAPI MediaSeekingPassThru_QueryPreferredFormat(IMediaSeeking *
static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking * iface, GUID * pFormat) static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking * iface, GUID * pFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pFormat); TRACE("(%p/%p)->(%p)\n", iface, This, pFormat);
@ -366,7 +379,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetTimeFormat(IMediaSeeking * iface,
static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking * iface, const GUID * pFormat) static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking * iface, const GUID * pFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat)); TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
@ -382,7 +395,7 @@ static HRESULT WINAPI MediaSeekingPassThru_IsUsingTimeFormat(IMediaSeeking * ifa
static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking * iface, const GUID * pFormat) static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking * iface, const GUID * pFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat)); TRACE("(%p/%p)->(%s)\n", iface, This, debugstr_guid(pFormat));
@ -398,7 +411,7 @@ static HRESULT WINAPI MediaSeekingPassThru_SetTimeFormat(IMediaSeeking * iface,
static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking * iface, LONGLONG * pDuration) static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking * iface, LONGLONG * pDuration)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pDuration); TRACE("(%p/%p)->(%p)\n", iface, This, pDuration);
@ -414,7 +427,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetDuration(IMediaSeeking * iface, LO
static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking * iface, LONGLONG * pStop) static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking * iface, LONGLONG * pStop)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, pStop); TRACE("(%p/%p)->(%p)\n", iface, This, pStop);
@ -430,7 +443,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetStopPosition(IMediaSeeking * iface
static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking * iface, LONGLONG * pCurrent) static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking * iface, LONGLONG * pCurrent)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr = S_OK; HRESULT hr = S_OK;
TRACE("(%p/%p)->(%p)\n", iface, This, pCurrent); TRACE("(%p/%p)->(%p)\n", iface, This, pCurrent);
@ -458,7 +471,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetCurrentPosition(IMediaSeeking * if
static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking * iface, LONGLONG * pTarget, const GUID * pTargetFormat, LONGLONG Source, const GUID * pSourceFormat) static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking * iface, LONGLONG * pTarget, const GUID * pTargetFormat, LONGLONG Source, const GUID * pSourceFormat)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p,%s,%x%08x,%s)\n", iface, This, pTarget, debugstr_guid(pTargetFormat), (DWORD)(Source>>32), (DWORD)Source, debugstr_guid(pSourceFormat)); TRACE("(%p/%p)->(%p,%s,%x%08x,%s)\n", iface, This, pTarget, debugstr_guid(pTargetFormat), (DWORD)(Source>>32), (DWORD)Source, debugstr_guid(pSourceFormat));
@ -474,7 +487,7 @@ static HRESULT WINAPI MediaSeekingPassThru_ConvertTimeFormat(IMediaSeeking * ifa
static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags) static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p,%x,%p,%x)\n", iface, This, pCurrent, dwCurrentFlags, pStop, dwStopFlags); TRACE("(%p/%p)->(%p,%x,%p,%x)\n", iface, This, pCurrent, dwCurrentFlags, pStop, dwStopFlags);
@ -489,7 +502,7 @@ static HRESULT WINAPI MediaSeekingPassThru_SetPositions(IMediaSeeking * iface, L
static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, LONGLONG * pStop) static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking * iface, LONGLONG * pCurrent, LONGLONG * pStop)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p, %p)\n", iface, This, pCurrent, pStop); TRACE("(%p/%p)->(%p, %p)\n", iface, This, pCurrent, pStop);
@ -505,7 +518,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetPositions(IMediaSeeking * iface, L
static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking * iface, LONGLONG * pEarliest, LONGLONG * pLatest) static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking * iface, LONGLONG * pEarliest, LONGLONG * pLatest)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p,%p)\n", iface, This, pEarliest, pLatest); TRACE("(%p/%p)->(%p,%p)\n", iface, This, pEarliest, pLatest);
@ -521,7 +534,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetAvailable(IMediaSeeking * iface, L
static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking * iface, double dRate) static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking * iface, double dRate)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%e)\n", iface, This, dRate); TRACE("(%p/%p)->(%e)\n", iface, This, dRate);
@ -537,7 +550,7 @@ static HRESULT WINAPI MediaSeekingPassThru_SetRate(IMediaSeeking * iface, double
static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking * iface, double * dRate) static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking * iface, double * dRate)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p/%p)->(%p)\n", iface, This, dRate); TRACE("(%p/%p)->(%p)\n", iface, This, dRate);
@ -553,7 +566,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetRate(IMediaSeeking * iface, double
static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking * iface, LONGLONG * pPreroll) static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking * iface, LONGLONG * pPreroll)
{ {
ICOM_THIS_MULTI(PassThruImpl, IMediaSeeking_vtbl, iface); PassThruImpl *This = impl_from_IMediaSeeking(iface);
IMediaSeeking *seek; IMediaSeeking *seek;
HRESULT hr; HRESULT hr;
TRACE("(%p)\n", pPreroll); TRACE("(%p)\n", pPreroll);
@ -569,7 +582,7 @@ static HRESULT WINAPI MediaSeekingPassThru_GetPreroll(IMediaSeeking * iface, LON
HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start) HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start)
{ {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
EnterCriticalSection(&This->time_cs); EnterCriticalSection(&This->time_cs);
This->time_earliest = start; This->time_earliest = start;
This->timevalid = 1; This->timevalid = 1;
@ -579,7 +592,7 @@ HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_
HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface) HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
EnterCriticalSection(&This->time_cs); EnterCriticalSection(&This->time_cs);
This->timevalid = 0; This->timevalid = 0;
LeaveCriticalSection(&This->time_cs); LeaveCriticalSection(&This->time_cs);
@ -588,10 +601,10 @@ HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface)
HRESULT WINAPI RendererPosPassThru_EOS(IUnknown *iface) HRESULT WINAPI RendererPosPassThru_EOS(IUnknown *iface)
{ {
ICOM_THIS_MULTI(PassThruImpl, IInner_vtbl, iface); PassThruImpl *This = impl_from_IUnknown_inner(iface);
REFERENCE_TIME time; REFERENCE_TIME time;
HRESULT hr; HRESULT hr;
hr = IMediaSeeking_GetStopPosition((IMediaSeeking*)&This->IMediaSeeking_vtbl, &time); hr = IMediaSeeking_GetStopPosition(&This->IMediaSeeking_iface, &time);
EnterCriticalSection(&This->time_cs); EnterCriticalSection(&This->time_cs);
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
This->timevalid = 1; This->timevalid = 1;