CUIWindow::~CUIWindow() { VERIFY( !(GetParent()&&IsAutoDelete()) ); CUIWindow* parent = GetParent(); bool ad = IsAutoDelete(); if( parent && !ad ) parent->CUIWindow::DetachChild( this ); DetachAll(); if( GetPPMode() ) MainMenu()->UnregisterPPDraw (this); #ifdef LOG_ALL_WNDS xr_vector<DBGList>::iterator _it = dbg_list_wnds.begin(); bool bOK = false; for(;_it!=dbg_list_wnds.end();++_it){ if( (*_it).num==m_dbg_id && !(*_it).closed){ bOK = true; (*_it).closed = true; dbg_list_wnds.erase(_it); break; } if( (*_it).num==m_dbg_id && (*_it).closed){ Msg("--CUIWindow [%d] already deleted", m_dbg_id); bOK = true; } } if(!bOK) Msg("CUIWindow::~CUIWindow.[%d] cannot find window in list", m_dbg_id); #endif }
void CThread::Action() { try { OnStartup(); } catch (...) { LOG(LOG_ERROR, "thread %s, Unhandled exception caught in thread startup, aborting. auto delete: %d", m_ThreadName.c_str(), IsAutoDelete()); if (IsAutoDelete()) return; } try { Process(); } catch (...) { LOG(LOG_ERROR, "thread %s, Unhandled exception caught in thread process, aborting. auto delete: %d", m_ThreadName.c_str(), IsAutoDelete()); } try { OnExit(); } catch (...) { LOG(LOG_ERROR, "thread %s, Unhandled exception caught in thread OnExit, aborting. auto delete: %d", m_ThreadName.c_str(), IsAutoDelete()); } }
void CThread::Action() { try { OnStartup(); } catch (...) { CLog::Log(LOGERROR, "%s - thread %s, Unhandled exception caught in thread startup, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); if (IsAutoDelete()) return; } try { Process(); } catch (...) { CLog::Log(LOGERROR, "%s - thread %s, Unhandled exception caught in thread process, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); } try { OnExit(); } catch (...) { CLog::Log(LOGERROR, "%s - thread %s, Unhandled exception caught in thread exit, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); } }
void CThread::Action() { try { OnStartup(); } catch (const XbmcCommons::UncheckedException &e) { e.LogThrowMessage("OnStartup"); if (IsAutoDelete()) return; } catch (...) { LOG(LOGERROR, "%s - thread %s, Unhandled exception caught in thread startup, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); if (IsAutoDelete()) return; } try { Process(); } catch (const XbmcCommons::UncheckedException &e) { e.LogThrowMessage("Process"); } catch (...) { LOG(LOGERROR, "%s - thread %s, Unhandled exception caught in thread process, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); } try { OnExit(); } catch (const XbmcCommons::UncheckedException &e) { e.LogThrowMessage("OnExit"); } catch (...) { LOG(LOGERROR, "%s - thread %s, Unhandled exception caught in thread OnExit, aborting. auto delete: %d", __FUNCTION__, m_ThreadName.c_str(), IsAutoDelete()); } }
CJobWorker::~CJobWorker() { // while we should already be removed from the job manager, if an exception // occurs during processing that we haven't caught, we may skip over that step. // Thus, before we go out of scope, ensure the job manager knows we're gone. m_jobManager->RemoveWorker(this); if(!IsAutoDelete()) StopThread(); }