static HRESULT WINAPI DSoundRender_InputPin_BeginFlush(IPin * iface) { BaseInputPin *This = (BaseInputPin *)iface; DSoundRenderImpl *pFilter = (DSoundRenderImpl *)This->pin.pinInfo.pFilter; HRESULT hr; TRACE("\n"); EnterCriticalSection(This->pin.pCritSec); hr = BaseInputPinImpl_BeginFlush(iface); SetEvent(pFilter->blocked); LeaveCriticalSection(This->pin.pCritSec); return hr; }
static HRESULT WINAPI TransformFilter_InputPin_BeginFlush(IPin * iface) { BaseInputPin* This = impl_BaseInputPin_from_IPin(iface); TransformFilter* pTransform; HRESULT hr = S_OK; TRACE("(%p)->()\n", iface); pTransform = impl_from_IBaseFilter(This->pin.pinInfo.pFilter); EnterCriticalSection(&pTransform->filter.csFilter); if (pTransform->pFuncsTable->pfnBeginFlush) hr = pTransform->pFuncsTable->pfnBeginFlush(pTransform); if (SUCCEEDED(hr)) hr = BaseInputPinImpl_BeginFlush(iface); LeaveCriticalSection(&pTransform->filter.csFilter); return hr; }
static HRESULT WINAPI BaseRenderer_InputPin_BeginFlush(IPin * iface) { BaseInputPin* This = impl_BaseInputPin_from_IPin(iface); BaseRenderer *pFilter = impl_from_IBaseFilter(This->pin.pinInfo.pFilter); HRESULT hr = S_OK; TRACE("(%p/%p)->()\n", This, iface); EnterCriticalSection(&pFilter->filter.csFilter); EnterCriticalSection(&pFilter->csRenderLock); EnterCriticalSection(This->pin.pCritSec); hr = BaseInputPinImpl_BeginFlush(iface); if (SUCCEEDED(hr)) { if (pFilter->pFuncsTable->pfnBeginFlush) hr = pFilter->pFuncsTable->pfnBeginFlush(pFilter); else hr = BaseRendererImpl_BeginFlush(pFilter); } LeaveCriticalSection(This->pin.pCritSec); LeaveCriticalSection(&pFilter->filter.csFilter); LeaveCriticalSection(&pFilter->csRenderLock); return hr; }