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'.