Alessandro Pignotti : quartz: Properly implement IGraphVersion in IFilterGraph.
Alexandre Julliard
julliard at winehq.org
Mon Feb 25 14:33:47 CST 2013
Module: wine
Branch: master
Commit: ebc37f45e654b2b3ad82cda73893dcc3def4a8e3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ebc37f45e654b2b3ad82cda73893dcc3def4a8e3
Author: Alessandro Pignotti <a.pignotti at sssup.it>
Date: Tue Feb 19 16:15:20 2013 +0100
quartz: Properly implement IGraphVersion in IFilterGraph.
---
dlls/quartz/filtergraph.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index fb0f977..4140d23 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -204,6 +204,7 @@ typedef struct _IFilterGraphImpl {
LONGLONG stop_position;
LONG recursioncount;
IUnknown *pSite;
+ LONG version;
} IFilterGraphImpl;
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->pFilterNames[This->nFilters] = wszFilterName;
This->nFilters++;
+ This->version++;
IBaseFilter_SetSyncSource(pFilter, This->refClock);
}
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->pFilterNames+i, This->pFilterNames+i+1, sizeof(LPWSTR)*(This->nFilters - 1 - i));
This->nFilters--;
+ This->version++;
/* Invalidate interfaces in the cache */
for (i = 0; i < This->nItfCacheEntries; i++)
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);
- 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 =
@@ -5653,6 +5660,7 @@ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
fimpl->stop_position = -1;
fimpl->punkFilterMapper2 = NULL;
fimpl->recursioncount = 0;
+ fimpl->version = 0;
if (pUnkOuter)
fimpl->outer_unk = pUnkOuter;
More information about the wine-cvs
mailing list