Christian Costa wrote:
Index: dlls/quartz/dsoundrender.c
RCS file: /home/wine/wine/dlls/quartz/dsoundrender.c,v retrieving revision 1.6 diff -u -r1.6 dsoundrender.c --- dlls/quartz/dsoundrender.c 6 Jan 2005 19:36:47 -0000 1.6 +++ dlls/quartz/dsoundrender.c 27 Feb 2005 20:48:17 -0000 @@ -550,8 +550,8 @@
static HRESULT WINAPI DSoundRender_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *pGraph, LPCWSTR pName) {
- HRESULT hr; DSoundRenderImpl *This = (DSoundRenderImpl *)iface;
HRESULT hr = S_OK;
TRACE("(%p/%p)->(%p, %s)\n", This, iface, pGraph, debugstr_w(pName));
@@ -563,7 +563,14 @@ *This->filterInfo.achName = '\0'; This->filterInfo.pGraph = pGraph; /* NOTE: do NOT increase ref. count */
- hr = IFilterGraph_QueryInterface(pGraph, &IID_IMediaEventSink, (LPVOID*)&This->pEventSink);
This->pEventSink = NULL;
if (pGraph)
{
/* Cache IMediaEventSink interface w/o increasing filtergraph refcount */
I appreciate that this works perfectly fine at the moment, but these kind of assumptions can lead to difficult to track memory corruptions, so it would be best to avoid caching the object here and querying for it when it's needed.
hr = IFilterGraph_QueryInterface(pGraph, &IID_IMediaEventSink, (LPVOID*)&This->pEventSink);
if (SUCCEEDED(hr))
IMediaEventSink_Release(This->pEventSink);
} LeaveCriticalSection(&This->csFilter);}
Rob