This is not correct, you must connect all pins, not just the first that succeeds.
Asleep? ;) You can't connect an input pin more then once (VFW_E_ALREADY_CONNECTED), anyway this function always returned S_OK, I fixed that too now... If you still think multiple connects should happen http://msdn.microsoft.com/library/en-us/directshow/htm/ipinconnect.asp ;)
No, no. It's not necessary. I'm convinced. :-)
static HRESULT WINAPI Mediacontrol_Pause(IMediaControl *iface) { ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
- TRACE("(%p/%p)->()\n", This, iface);
- TRACE("(%p/%p)->(): stub !!!\n", This, iface);
if (This->state == State_Paused) return S_OK;
SendTheFilterAMessage(iface, SendPause);
This->state = State_Paused;
return S_OK;
}
Shouldn't S_FALSE be returned in the last statement?
static HRESULT WINAPI Mediacontrol_Stop(IMediaControl *iface) { ICOM_THIS_MULTI(IFilterGraphImpl, IMediaControl_vtbl, iface);
- TRACE("(%p/%p)->()\n", This, iface);
- TRACE("(%p/%p)->(): stub !!!\n", This, iface);
if (This->state == State_Stopped) return S_OK;
if (This->state == State_Running) SendTheFilterAMessage(iface, SendPause);
SendTheFilterAMessage(iface, SendStop);
This->state = State_Stopped;
return S_OK;
}
I think you should move the critical section out of SendTheFilterAMessage and put it in Run, Pause and Stop methods.
Bye, Christian
PS: SendTheFilterAMessage and FoundFilter are really odd names, no?