On 29.06.2015 9:08, Sebastian Lackner wrote:
BasePin *pin;
VfwPinImpl *pin; TRACE("destroying everything\n"); if (This->init)
@@ -226,10 +236,10 @@ static ULONG WINAPI VfwCapture_Release(IBaseFilter * iface) qcap_driver_stop(This->driver_info, &This->filter.state); qcap_driver_destroy(This->driver_info); }
pin = (BasePin*) This->pOutputPin;
if (pin->pConnectedTo != NULL)
pin = impl_from_IPin(This->pOutputPin);
if (pin->pin.pin.pConnectedTo != NULL) {
IPin_Disconnect(pin->pConnectedTo);
IPin_Disconnect(pin->pin.pin.pConnectedTo);
This is not better than it is now, 'pOutputPin' is IPin* so you should be using public methods.
if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IPin))
*ppv = This;
*ppv = &This->pin.pin.IPin_iface;
This could as well say 'iface'.