quartz: Make transform filter return hresult from running/pausing.

This commit is contained in:
Maarten Lankhorst 2008-07-22 04:09:55 -07:00 committed by Alexandre Julliard
parent fa38a7e313
commit db2ccf43d4
1 changed files with 18 additions and 9 deletions

View File

@ -316,6 +316,7 @@ static HRESULT WINAPI TransformFilter_GetClassID(IBaseFilter * iface, CLSID * pC
static HRESULT WINAPI TransformFilter_Stop(IBaseFilter * iface) static HRESULT WINAPI TransformFilter_Stop(IBaseFilter * iface)
{ {
TransformFilterImpl *This = (TransformFilterImpl *)iface; TransformFilterImpl *This = (TransformFilterImpl *)iface;
HRESULT hr = S_OK;
TRACE("(%p/%p)\n", This, iface); TRACE("(%p/%p)\n", This, iface);
@ -323,29 +324,33 @@ static HRESULT WINAPI TransformFilter_Stop(IBaseFilter * iface)
{ {
This->state = State_Stopped; This->state = State_Stopped;
if (This->pFuncsTable->pfnProcessEnd) if (This->pFuncsTable->pfnProcessEnd)
This->pFuncsTable->pfnProcessEnd(This); hr = This->pFuncsTable->pfnProcessEnd(This);
} }
LeaveCriticalSection(&This->csFilter); LeaveCriticalSection(&This->csFilter);
return S_OK; return hr;
} }
static HRESULT WINAPI TransformFilter_Pause(IBaseFilter * iface) static HRESULT WINAPI TransformFilter_Pause(IBaseFilter * iface)
{ {
TransformFilterImpl *This = (TransformFilterImpl *)iface; TransformFilterImpl *This = (TransformFilterImpl *)iface;
HRESULT hr;
TRACE("(%p/%p)->()\n", This, iface); TRACE("(%p/%p)->()\n", This, iface);
EnterCriticalSection(&This->csFilter); EnterCriticalSection(&This->csFilter);
{ {
if (This->state == State_Stopped) if (This->state == State_Stopped)
IBaseFilter_Run(iface, -1); hr = IBaseFilter_Run(iface, -1);
else
hr = S_OK;
This->state = State_Paused; if (SUCCEEDED(hr))
This->state = State_Paused;
} }
LeaveCriticalSection(&This->csFilter); LeaveCriticalSection(&This->csFilter);
return S_OK; return hr;
} }
static HRESULT WINAPI TransformFilter_Run(IBaseFilter * iface, REFERENCE_TIME tStart) static HRESULT WINAPI TransformFilter_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
@ -361,12 +366,16 @@ static HRESULT WINAPI TransformFilter_Run(IBaseFilter * iface, REFERENCE_TIME tS
{ {
((InputPin *)This->ppPins[0])->end_of_stream = 0; ((InputPin *)This->ppPins[0])->end_of_stream = 0;
if (This->pFuncsTable->pfnProcessBegin) if (This->pFuncsTable->pfnProcessBegin)
This->pFuncsTable->pfnProcessBegin(This); hr = This->pFuncsTable->pfnProcessBegin(This);
OutputPin_CommitAllocator((OutputPin *)This->ppPins[1]); if (SUCCEEDED(hr))
hr = OutputPin_CommitAllocator((OutputPin *)This->ppPins[1]);
} }
This->rtStreamStart = tStart; if (SUCCEEDED(hr))
This->state = State_Running; {
This->rtStreamStart = tStart;
This->state = State_Running;
}
} }
LeaveCriticalSection(&This->csFilter); LeaveCriticalSection(&This->csFilter);