⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smldoc.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)    closeViewports();    removeViewports();    HX_DELETE(m_pViewportList);    HX_RELEASE(m_pViewPortManager);#ifdef XXXMEH_DO_VIEWPORT_TLC    clearViewportMap();#endif#endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */    HX_DELETE(m_pRegPointMap);    HX_RELEASE(m_pPersistentLayoutStream);    HX_RELEASE(m_pErrorMessages);#if defined(HELIX_FEATURE_SMIL2_ANIMATION)    removeActiveAnimations();#endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */    HX_DELETE(m_pActiveAnimations);    HX_DELETE(m_pAnimationMap);    HX_DELETE(m_pAnimSiteRedrawMap);    HX_DELETE(m_pAnimRegionRecomputeMap);    HX_DELETE(m_pAnimTopLayoutMap);    deleteExternalMediaMarkerList();    HX_RELEASE(m_pSMILDefaultNamespaceStr);    if (m_pPrefetchTrackElementMap)    {	CHXMapLongToObj::Iterator i;	for (i = m_pPrefetchTrackElementMap->Begin();		i != m_pPrefetchTrackElementMap->End(); ++i)	{	    CHXString* pId = (CHXString*)(*i);	    HX_DELETE(pId);	}	HX_DELETE(m_pPrefetchTrackElementMap);    }    if (m_pIndependentPlayer)    {	HX_DELETE(m_pIndependentPlayer);    }    if (m_pChildSiteInfoMap)    {	HX_ASSERT(m_pChildSiteInfoMap->IsEmpty()); // /Should be empty!...	// ...but in case it's not empty, go ahead and delete its nodes:	CHXMapLongToObj::Iterator i = m_pChildSiteInfoMap->Begin();	for(; i != m_pChildSiteInfoMap->End(); ++i)	{	    SMILChildSiteInfo* pChildSiteInfo = (SMILChildSiteInfo*)(*i);	    delete pChildSiteInfo;	}	HX_DELETE(m_pChildSiteInfoMap);    }#if defined(_UNIX)  &&  (!(defined(_BEOS)))  &&  defined(USE_XWINDOWS)    CHXMapPtrToPtr::Iterator i = m_siteToXDataMap.Begin();    for(; i != m_siteToXDataMap.End(); ++i)    {        XData* xData = (XData*)(*i);	delete xData;    }    if (m_pVisualInfo)    {	XFree(m_pVisualInfo);	m_pVisualInfo = NULL;    }    if (m_pDisplay && m_hHyperlinkCursor)    {	XFreeCursor(m_pDisplay, m_hHyperlinkCursor);	m_hHyperlinkCursor = 0;    }#endif    #if defined(_MACINTOSH)    if (m_hHyperlinkCursor)    {    	m_pResourceLoader->UnloadResource((Handle)m_hHyperlinkCursor);    	m_hHyperlinkCursor = NULL;    	    	HX_RELEASE(m_pResourceLoader);    }    if (m_bResetCursor)    {	::InitCursor();    }#endif    HX_RELEASE(m_pSoundLevelMutex);    clearRendererMap();    HX_DELETE(m_pMediaID2RendererMap);    clearRendererSiteMap();    HX_DELETE(m_pMediaID2RendererSiteMap);    clearRendererSiteWatcherMap();    HX_DELETE(m_pMediaID2RendererSiteWatcherMap);    destroyAllRegions();    CleanUpSiteInfoContainers();    HX_DELETE(m_pSiteWatcherMap);}/* * IUnknown methods */STDMETHODIMPCSmilDocumentRenderer::QueryInterface(REFIID riid, void** ppvObj){    if(IsEqualIID(riid, IID_IUnknown))    {	AddRef();	*ppvObj = this;	return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXSiteUser))    {	HX_ASSERT(0  &&  "Huh?!  CSmilDocumentRenderer doesn't implement IHXSiteUser");	AddRef();	*ppvObj = (IHXSiteUser*)this;	return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXRendererAdviseSink))    {	AddRef();	*ppvObj = (IHXRendererAdviseSink*)this;	return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXGroupSink))    {	AddRef();	*ppvObj = (IHXGroupSink*)this;	return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXClientAdviseSink))    {	AddRef();	*ppvObj = (IHXClientAdviseSink*)this;	return HXR_OK;    }    else if (IsEqualIID(riid, IID_IHXPrefetchSink))    {	AddRef();	*ppvObj = (IHXPrefetchSink*)this;	return HXR_OK;    }    else if (IsEqualIID(riid, IID_IHXTrackSink))    {	AddRef();	*ppvObj = (IHXTrackSink*)this;	return HXR_OK;    }#if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)    else if (IsEqualIID(riid, IID_IHXViewPortSink))    {	AddRef();	*ppvObj = (IHXViewPortSink*) this;	return HXR_OK;    }#ifdef XXXMEH_DO_VIEWPORT_TLC    else if (IsEqualIID(riid, IID_IHXViewPortSupplier))    {	AddRef();	*ppvObj = (IHXViewPortSupplier*) this;	return HXR_OK;    }#endif#endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */#if defined(BE_SITE_SUPPLIER_20010205)    else if (IsEqualIID(riid, IID_IHXSiteSupplier))    {	AddRef();	*ppvObj = (IHXSiteSupplier*) this;	return HXR_OK;    }#endif /* BE_SITE_SUPPLIER_20010205 */    else if (IsEqualIID(riid, IID_IHXMediaMarkerSink))    {	AddRef();	*ppvObj = (IHXMediaMarkerSink*) this;	return HXR_OK;    }    else if (IsEqualIID(riid, IID_IHXEventSink))    {	AddRef();	*ppvObj = (IHXEventSink*) this;	return HXR_OK;    }    else if (IsEqualIID(riid, IID_IHXErrorSink))    {	AddRef();	*ppvObj = (IHXErrorSink*) this;	return HXR_OK;    }    *ppvObj = NULL;    return HXR_NOINTERFACE;}STDMETHODIMP_(ULONG32)CSmilDocumentRenderer::AddRef(){    return InterlockedIncrement(&m_lRefCount);}STDMETHODIMP_(ULONG32)CSmilDocumentRenderer::Release(){    if(InterlockedDecrement(&m_lRefCount) > 0)    {	return m_lRefCount;    }    delete this;    return 0;}HX_RESULTCSmilDocumentRenderer::close(CSmilRenderer* pParent){    MLOG_LEAKCHECK("CSmilDocumentRenderer::close() t=%lu\n", HX_GET_BETTERTICKCOUNT());    if (m_pHandlePendingSchedulingCallback &&	m_pHandlePendingSchedulingCallback->m_bIsCallbackPending)    {	m_pHandlePendingSchedulingCallback->m_bIsCallbackPending = FALSE;	m_pScheduler->Remove(m_pHandlePendingSchedulingCallback->m_PendingHandle);	m_pHandlePendingSchedulingCallback->m_PendingHandle = 0;    }    HX_RELEASE(m_pHandlePendingSchedulingCallback);    if (m_pHyperlinkCallback &&	m_pHyperlinkCallback->IsCallbackPending())    {	m_pHyperlinkCallback->SetCallbackPending(FALSE);	m_pScheduler->Remove(m_pHyperlinkCallback->GetCallbackHandle());	m_pHyperlinkCallback->SetCallbackHandle(0);    }    HX_RELEASE(m_pHyperlinkCallback);    if (m_pDelayedRendererCloseList)    {	CHXSimpleList::Iterator i = m_pDelayedRendererCloseList->Begin();	for (; i != m_pDelayedRendererCloseList->End(); ++i)	{	    SMILDelayedRendererClose* pClose= (SMILDelayedRendererClose*)(*i);	    //HX_ASSERT(FALSE); ??	    actualRendererClosed(pClose->m_pRenderer, pClose->m_pInfo);	    HX_RELEASE(pClose->m_pRenderer);	    HX_RELEASE(pClose->m_pInfo);	    HX_DELETE(pClose);	}    }    HX_DELETE(m_pDelayedRendererCloseList);    if (m_pRootLayout && m_pRootLayout->m_pSiteUser)    {        IUnknown* pThisUnk = NULL;        m_pRootLayout->m_pSiteUser->QueryInterface(IID_IUnknown, (void**) &pThisUnk);        if (pThisUnk)        {            pParent->HandleRemoveLayoutSiteGroup(pThisUnk);        }        HX_RELEASE(pThisUnk);    }    m_pParent = NULL;    if(m_pEventList)    {	CHXSimpleList::Iterator i = m_pEventList->Begin();	for(; i != m_pEventList->End(); ++i)	{	    CSmilLayoutEvent* pEvent = (CSmilLayoutEvent*)(*i);	    delete pEvent;	}    }    HX_DELETE(m_pEventList);    removeAllPlayToAssoc();    deleteExternalMediaMarkerList();//    HX_DELETE(m_pRootLayout);#if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)    closeViewports();    removeViewports();    HX_DELETE(m_pViewportList);#ifdef XXXMEH_DO_VIEWPORT_TLC    clearViewportMap();#endif    // Remove ourselves as a view port sink    if (m_pViewPortManager)    {        IHXViewPortSink* pSink = NULL;        QueryInterface(IID_IHXViewPortSink, (void**) &pSink);        if (pSink)        {            m_pViewPortManager->RemoveViewPortSink(pSink);        }        HX_RELEASE(pSink);    }    HX_RELEASE(m_pViewPortManager);#endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */    HX_DELETE(m_pRegPointMap);    HX_RELEASE(m_pSMILDefaultNamespaceStr);#if defined(HELIX_FEATURE_SMIL2_ANIMATION)    removeActiveAnimations();#endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */    HX_DELETE(m_pActiveAnimations);    HX_DELETE(m_pAnimSiteRedrawMap);    HX_DELETE(m_pAnimRegionRecomputeMap);    HX_DELETE(m_pAnimTopLayoutMap);    // Remove ourselves as a media marker sink    // TRUE adds us, FALSE removes us    addRemoveMediaMarkerSink(FALSE);    // Are we setup as an event sink?    if (m_bEventSinkWasSetup)    {        // Remove ourselves as an event sink,        // TRUE adds us, FALSE removes us        addRemoveEventSink(FALSE);    }    // Remove any renderer event sinks we have setup    removeAllEventSinks();    HX_DELETE(m_pEventSinkList);    // Remove ourselve as an error sink    addRemoveErrorSink(FALSE);    HX_RELEASE(m_pErrorMessages);    if (m_bRootLayoutSiteDetached)    {        destroyAllRegions();    }    #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)    if(m_pTransitionMap)    {	CHXMapStringToOb::Iterator i = m_pTransitionMap->Begin();	for(; i != m_pTransitionMap->End(); ++i)	{	    CSmilTransitionInfo* pTrans = (CSmilTransitionInfo*)(*i);	    delete pTrans;	}    }    HX_DELETE(m_pTransitionMap);#endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */    if (m_pActiveTransitions)    {	CHXSimpleList::Iterator i = m_pActiveTransitions->Begin();	for (;i != m_pActiveTransitions->End(); ++i)	{	    SMILTransitionState* pState = (SMILTransitionState*)*i;	    HX_DELETE(pState);	}    }    HX_DELETE(m_pActiveTransitions);    if(m_pGroupInfoMap)    {	CHXMapLongToObj::Iterator i = m_pGroupInfoMap->Begin();	for(; i != m_pGroupInfoMap->End(); ++i)	{	    SMILGroupInfo* pGroupInfo = (SMILGroupInfo*)(*i);	    delete pGroupInfo;	}    }    HX_DELETE(m_pGroupInfoMap);    if(m_pDeferredSourceMap)    {	CHXMapStringToOb::Iterator i = m_pDeferredSourceMap->Begin();	for(; i != m_pDeferredSourceMap->End(); ++i)	{	    SMILDeferredSourceInfo* pInfo = (SMILDeferredSourceInfo*)(*i);	    delete pInfo;	}    }    HX_DELETE(m_pDeferredSourceMap);    if(m_pDeferrededRemoveTrackMap)    {	CHXMapStringToOb::Iterator i = m_pDeferrededRemoveTrackMap->Begin();	for(; i != m_pDeferrededRemoveTrackMap->End(); ++i)	{	    CHXString* pID = (CHXString*)(*i);	    delete pID;	}    }    HX_DELETE(m_pDeferrededRemoveTrackMap);    if (m_pPausedAndDisabledIDMap)    {	CHXMapStringToOb::Iterator i = m_pPausedAndDisabledIDMap->Begin();	for(; i != m_pPausedAndDisabledIDMap->End(); ++i)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -