bool CAddonMgr::Init() { m_cpluff = new DllLibCPluff; m_cpluff->Load(); m_database.Open(); if (!m_cpluff->IsLoaded()) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, could not load libcpluff"); return false; } m_cpluff->set_fatal_error_handler(cp_fatalErrorHandler); cp_status_t status; status = m_cpluff->init(); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_init() returned status: %i", status); return false; } //TODO could separate addons into different contexts // would allow partial unloading of addon framework m_cp_context = m_cpluff->create_context(&status); assert(m_cp_context); status = m_cpluff->register_pcollection(m_cp_context, _P("special://home/addons")); status = m_cpluff->register_pcollection(m_cp_context, _P("special://xbmc/addons")); status = m_cpluff->register_pcollection(m_cp_context, _P("special://xbmcbin/addons")); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_pcollection() returned status: %i", status); return false; } status = m_cpluff->register_logger(m_cp_context, cp_logger, &CAddonMgr::Get(), clog_to_cp(g_advancedSettings.m_logLevel)); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_logger() returned status: %i", status); return false; } FindAddons(); return true; }
bool CAddonMgr::Init() { m_cpluff = new DllLibCPluff; m_cpluff->Load(); m_database.Open(); if (!m_cpluff->IsLoaded()) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, could not load libcpluff"); return false; } m_cpluff->set_fatal_error_handler(cp_fatalErrorHandler); cp_status_t status; status = m_cpluff->init(); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_init() returned status: %i", status); return false; } //TODO could separate addons into different contexts // would allow partial unloading of addon framework m_cp_context = m_cpluff->create_context(&status); assert(m_cp_context); status = m_cpluff->register_pcollection(m_cp_context, CSpecialProtocol::TranslatePath("special://home/addons").c_str()); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_pcollection() returned status: %i", status); return false; } status = m_cpluff->register_pcollection(m_cp_context, CSpecialProtocol::TranslatePath("special://xbmc/addons").c_str()); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_pcollection() returned status: %i", status); return false; } status = m_cpluff->register_pcollection(m_cp_context, CSpecialProtocol::TranslatePath("special://xbmcbin/addons").c_str()); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_pcollection() returned status: %i", status); return false; } status = m_cpluff->register_logger(m_cp_context, cp_logger, &CAddonMgr::Get(), clog_to_cp(g_advancedSettings.m_logLevel)); if (status != CP_OK) { CLog::Log(LOGERROR, "ADDONS: Fatal Error, cp_register_logger() returned status: %i", status); return false; } FindAddons(); VECADDONS repos; if (GetAddons(ADDON_REPOSITORY, repos)) { VECADDONS::iterator it = repos.begin(); for (;it != repos.end(); ++it) CLog::Log(LOGNOTICE, "ADDONS: Using repository %s", (*it)->ID().c_str()); } return true; }