quartz: Properly implement IGraphVersion in IFilterGraph.
This commit is contained in:
parent
ea16925d8c
commit
ebc37f45e6
|
@ -204,6 +204,7 @@ typedef struct _IFilterGraphImpl {
|
||||||
LONGLONG stop_position;
|
LONGLONG stop_position;
|
||||||
LONG recursioncount;
|
LONG recursioncount;
|
||||||
IUnknown *pSite;
|
IUnknown *pSite;
|
||||||
|
LONG version;
|
||||||
} IFilterGraphImpl;
|
} IFilterGraphImpl;
|
||||||
|
|
||||||
static inline IFilterGraphImpl *impl_from_IUnknown(IUnknown *iface)
|
static inline IFilterGraphImpl *impl_from_IUnknown(IUnknown *iface)
|
||||||
|
@ -457,6 +458,7 @@ static HRESULT WINAPI FilterGraph2_AddFilter(IFilterGraph2 *iface, IBaseFilter *
|
||||||
This->ppFiltersInGraph[This->nFilters] = pFilter;
|
This->ppFiltersInGraph[This->nFilters] = pFilter;
|
||||||
This->pFilterNames[This->nFilters] = wszFilterName;
|
This->pFilterNames[This->nFilters] = wszFilterName;
|
||||||
This->nFilters++;
|
This->nFilters++;
|
||||||
|
This->version++;
|
||||||
IBaseFilter_SetSyncSource(pFilter, This->refClock);
|
IBaseFilter_SetSyncSource(pFilter, This->refClock);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -542,6 +544,7 @@ static HRESULT WINAPI FilterGraph2_RemoveFilter(IFilterGraph2 *iface, IBaseFilte
|
||||||
memmove(This->ppFiltersInGraph+i, This->ppFiltersInGraph+i+1, sizeof(IBaseFilter*)*(This->nFilters - 1 - i));
|
memmove(This->ppFiltersInGraph+i, This->ppFiltersInGraph+i+1, sizeof(IBaseFilter*)*(This->nFilters - 1 - i));
|
||||||
memmove(This->pFilterNames+i, This->pFilterNames+i+1, sizeof(LPWSTR)*(This->nFilters - 1 - i));
|
memmove(This->pFilterNames+i, This->pFilterNames+i+1, sizeof(LPWSTR)*(This->nFilters - 1 - i));
|
||||||
This->nFilters--;
|
This->nFilters--;
|
||||||
|
This->version++;
|
||||||
/* Invalidate interfaces in the cache */
|
/* Invalidate interfaces in the cache */
|
||||||
for (i = 0; i < This->nItfCacheEntries; i++)
|
for (i = 0; i < This->nItfCacheEntries; i++)
|
||||||
if (pFilter == This->ItfCacheEntries[i].filter)
|
if (pFilter == This->ItfCacheEntries[i].filter)
|
||||||
|
@ -5580,9 +5583,13 @@ static HRESULT WINAPI GraphVersion_QueryVersion(IGraphVersion *iface, LONG *pVer
|
||||||
{
|
{
|
||||||
IFilterGraphImpl *This = impl_from_IGraphVersion(iface);
|
IFilterGraphImpl *This = impl_from_IGraphVersion(iface);
|
||||||
|
|
||||||
FIXME("(%p)->(%p): stub!\n", This, pVersion);
|
if(!pVersion)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
TRACE("(%p)->(%p): current version %i\n", This, pVersion, This->version);
|
||||||
|
|
||||||
|
*pVersion = This->version;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const IGraphVersionVtbl IGraphVersion_VTable =
|
static const IGraphVersionVtbl IGraphVersion_VTable =
|
||||||
|
@ -5653,6 +5660,7 @@ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
|
||||||
fimpl->stop_position = -1;
|
fimpl->stop_position = -1;
|
||||||
fimpl->punkFilterMapper2 = NULL;
|
fimpl->punkFilterMapper2 = NULL;
|
||||||
fimpl->recursioncount = 0;
|
fimpl->recursioncount = 0;
|
||||||
|
fimpl->version = 0;
|
||||||
|
|
||||||
if (pUnkOuter)
|
if (pUnkOuter)
|
||||||
fimpl->outer_unk = pUnkOuter;
|
fimpl->outer_unk = pUnkOuter;
|
||||||
|
|
Loading…
Reference in New Issue