コード例 #1
0
ファイル: samplegrabber.c プロジェクト: AlexSteel/wine
/* ISampleGrabber */
static HRESULT WINAPI
SampleGrabber_ISampleGrabber_SetCallback(ISampleGrabber *iface, ISampleGrabberCB *cb, LONG whichMethod)
{
    SG_Impl *This = impl_from_ISampleGrabber(iface);
    TRACE("(%p)->(%p, %u)\n", This, cb, whichMethod);
    if (This->grabberIface)
        ISampleGrabberCB_Release(This->grabberIface);
    This->grabberIface = cb;
    This->grabberMethod = whichMethod;
    if (cb)
        ISampleGrabberCB_AddRef(cb);
    return S_OK;
}
コード例 #2
0
ファイル: samplegrabber.c プロジェクト: AlexSteel/wine
/* Cleanup at end of life */
static void SampleGrabber_cleanup(SG_Impl *This)
{
    TRACE("(%p)\n", This);
    if (This->filter.filterInfo.pGraph)
        WARN("(%p) still joined to filter graph %p\n", This, This->filter.filterInfo.pGraph);
    if (This->allocator)
        IMemAllocator_Release(This->allocator);
    if (This->memOutput)
        IMemInputPin_Release(This->memOutput);
    if (This->grabberIface)
        ISampleGrabberCB_Release(This->grabberIface);
    if (This->mtype.pbFormat)
        CoTaskMemFree(This->mtype.pbFormat);
    if (This->bufferData)
        CoTaskMemFree(This->bufferData);
    if(This->seekthru_unk)
        IUnknown_Release(This->seekthru_unk);
}
コード例 #3
0
ファイル: samplegrabber.c プロジェクト: Barrell/wine
/* Cleanup at end of life */
static void SampleGrabber_cleanup(SG_Impl *This)
{
    TRACE("(%p)\n", This);
    if (This->info.pGraph)
	WARN("(%p) still joined to filter graph %p\n", This, This->info.pGraph);
    if (This->allocator)
        IMemAllocator_Release(This->allocator);
    if (This->refClock)
	IReferenceClock_Release(This->refClock);
    if (This->memOutput)
        IMemInputPin_Release(This->memOutput);
    if (This->grabberIface)
        ISampleGrabberCB_Release(This->grabberIface);
    if (This->mtype.pbFormat)
        CoTaskMemFree(This->mtype.pbFormat);
    if (This->bufferData)
        CoTaskMemFree(This->bufferData);
    if(This->seekthru_unk)
        IUnknown_Release(This->seekthru_unk);
    This->critSect.DebugInfo->Spare[0] = 0;
    DeleteCriticalSection(&This->critSect);
}