hr = IPin_QueryInternalConnections( from, NULL, &amount );
if (hr != E_NOTIMPL && amount)
FIXME("Use QueryInternalConnections!\n");
- hr = S_OK;
pin_info.pFilter = NULL;
hr = IPin_QueryPinInfo( from, &pin_info );
if (!refCount)
{
- FreeMediaType(&This->pin.mtCurrent);
- if (This->pAllocator)
- IMemAllocator_Release(This->pAllocator);
- This->pAllocator = NULL;
- CoTaskMemFree(This);
+ BaseOutputPin_Destroy(This);
return 0;
}
return refCount;
return E_FAIL;
}
+HRESULT WINAPI BaseOutputPin_Destroy(BaseOutputPin *This)
+{
+ FreeMediaType(&This->pin.mtCurrent);
+ if (This->pAllocator)
+ IMemAllocator_Release(This->pAllocator);
+ This->pAllocator = NULL;
+ CoTaskMemFree(This);
+ return S_OK;
+}
+
/*** Input Pin implementation ***/
static inline BaseInputPin *impl_BaseInputPin_from_IPin( IPin *iface )
if (!refCount)
{
- FreeMediaType(&This->pin.mtCurrent);
- if (This->pAllocator)
- IMemAllocator_Release(This->pAllocator);
- This->pAllocator = NULL;
- This->pin.IPin_iface.lpVtbl = NULL;
- CoTaskMemFree(This);
+ BaseInputPin_Destroy(This);
return 0;
}
else
CoTaskMemFree(pPinImpl);
return E_FAIL;
}
+
+HRESULT WINAPI BaseInputPin_Destroy(BaseInputPin *This)
+{
+ FreeMediaType(&This->pin.mtCurrent);
+ if (This->pAllocator)
+ IMemAllocator_Release(This->pAllocator);
+ This->pAllocator = NULL;
+ This->pin.IPin_iface.lpVtbl = NULL;
+ CoTaskMemFree(This);
+ return S_OK;
+}
TRACE("(%p/%p)->()\n", This, pFilter);
- EnterCriticalSection(&pFilter->filter.csFilter);
EnterCriticalSection(&pFilter->csRenderLock);
+ EnterCriticalSection(&pFilter->filter.csFilter);
hr = BaseInputPinImpl_EndOfStream(iface);
EnterCriticalSection(This->pin.pCritSec);
if (SUCCEEDED(hr))
hr = BaseRendererImpl_EndOfStream(pFilter);
}
LeaveCriticalSection(This->pin.pCritSec);
- LeaveCriticalSection(&pFilter->csRenderLock);
LeaveCriticalSection(&pFilter->filter.csFilter);
+ LeaveCriticalSection(&pFilter->csRenderLock);
return hr;
}
TRACE("(%p/%p)->()\n", This, iface);
- EnterCriticalSection(&pFilter->filter.csFilter);
EnterCriticalSection(&pFilter->csRenderLock);
+ EnterCriticalSection(&pFilter->filter.csFilter);
EnterCriticalSection(This->pin.pCritSec);
hr = BaseInputPinImpl_BeginFlush(iface);
if (SUCCEEDED(hr))
TRACE("(%p/%p)->()\n", This, pFilter);
- EnterCriticalSection(&pFilter->filter.csFilter);
EnterCriticalSection(&pFilter->csRenderLock);
+ EnterCriticalSection(&pFilter->filter.csFilter);
EnterCriticalSection(This->pin.pCritSec);
hr = BaseInputPinImpl_EndFlush(iface);
if (SUCCEEDED(hr))
hr = BaseRendererImpl_EndFlush(pFilter);
}
LeaveCriticalSection(This->pin.pCritSec);
- LeaveCriticalSection(&pFilter->csRenderLock);
LeaveCriticalSection(&pFilter->filter.csFilter);
+ LeaveCriticalSection(&pFilter->csRenderLock);
return hr;
}
from Winehq CVS. If you are looking to update something in these files
check Wine current souces first as it may already be fixed.
-reactos/lib/3rdparty/strmbase # Synced to Wine-1.7.17
+reactos/lib/3rdparty/strmbase # Synced to Wine-1.7.27
advapi32 -
reactos/dll/win32/advapi32/crypt/*.c # Synced to Wine-1.7.1