void VoutManager::acceptWnd( vout_window_t* pWnd, int width, int height ) { // Creation of a dedicated Window per vout thread VoutWindow* pVoutWindow = new VoutWindow( getIntf(), pWnd, width, height, (GenericWindow*) m_pVoutMainWindow ); // try to find a video Control within the theme CtrlVideo* pCtrlVideo = getBestCtrlVideo(); if( pCtrlVideo ) { // A Video Control is available // directly attach vout thread to it pCtrlVideo->attachVoutWindow( pVoutWindow ); } else { pVoutWindow->setCtrlVideo( NULL ); } // save vout characteristics m_SavedWndVec.push_back( SavedWnd( pWnd, pVoutWindow, pCtrlVideo ) ); msg_Dbg( pWnd, "New vout : Ctrl = %p, w x h = %ix%i", pCtrlVideo, width, height ); }
void* VoutManager::acceptVout( vout_thread_t* pVout, int width, int height ) { // Creation of a dedicated Window per vout thread VoutWindow* pVoutWindow = new VoutWindow( getIntf(), pVout, width, height, (GenericWindow*) m_pVoutMainWindow ); void* handle = pVoutWindow->getOSHandle(); // try to find a video Control within the theme CtrlVideo* pCtrlVideo = getBestCtrlVideo(); if( pCtrlVideo ) { // A Video Control is available // directly attach vout thread to it pCtrlVideo->attachVoutWindow( pVoutWindow ); } // save vout characteristics m_SavedVoutVec.push_back( SavedVout( pVout, pVoutWindow, pCtrlVideo ) ); msg_Dbg( getIntf(), "New incoming vout=0x%p, handle=0x%p, VideoCtrl=0x%p", pVout, handle, pCtrlVideo ); return handle; }
void VoutManager::restoreVoutConfig( bool b_success ) { if( !b_success ) { // loading new theme failed, restoring previous theme m_pCtrlVideoVec = m_pCtrlVideoVecBackup; } // reattach vout(s) to Video Controls vector<SavedWnd>::iterator it; for( it = m_SavedWndVec.begin(); it != m_SavedWndVec.end(); ++it ) { CtrlVideo* pCtrlVideo = getBestCtrlVideo(); if( pCtrlVideo ) { pCtrlVideo->attachVoutWindow( it->pVoutWindow ); it->pCtrlVideo = pCtrlVideo; } } }