added second pass function
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40218
This commit is contained in:
parent
8792f0b4f0
commit
a9087b13dd
@ -164,6 +164,9 @@ void SourceModBase::DoGlobalPluginLoads()
|
||||
GetSMBaseDir());
|
||||
|
||||
g_PluginSys.LoadAll_FirstPass(config_path, plugins_path);
|
||||
|
||||
/* No modules yet, it's safe to call this from here */
|
||||
g_PluginSys.LoadAll_SecondPass();
|
||||
}
|
||||
|
||||
bool SourceModBase::IsLateLoadInMap()
|
||||
|
@ -444,7 +444,7 @@ bool CPlugin::SetPauseState(bool paused)
|
||||
* PLUGIN ITERATOR *
|
||||
*******************/
|
||||
|
||||
CPluginManager::CPluginIterator::CPluginIterator(List<IPlugin *> *_mylist)
|
||||
CPluginManager::CPluginIterator::CPluginIterator(List<CPlugin *> *_mylist)
|
||||
{
|
||||
mylist = _mylist;
|
||||
}
|
||||
@ -495,7 +495,7 @@ CPluginManager::~CPluginManager()
|
||||
}
|
||||
|
||||
|
||||
void CPluginManager::LoadAll_FirstPass( const char *config, const char *basedir )
|
||||
void CPluginManager::LoadAll_FirstPass(const char *config, const char *basedir)
|
||||
{
|
||||
/* First read in the database of plugin settings */
|
||||
SMCParseError err;
|
||||
@ -730,6 +730,21 @@ void CPluginManager::AddPlugin(CPlugin *pPlugin)
|
||||
}
|
||||
}
|
||||
|
||||
void CPluginManager::LoadAll_SecondPass()
|
||||
{
|
||||
List<CPlugin *>::iterator iter;
|
||||
CPlugin *pPlugin;
|
||||
|
||||
for (iter=m_plugins.begin(); iter!=m_plugins.end(); iter++)
|
||||
{
|
||||
pPlugin = (*iter);
|
||||
if (pPlugin->GetStatus() == Plugin_Loaded)
|
||||
{
|
||||
RunSecondPass(pPlugin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CPluginManager::RunSecondPass(CPlugin *pPlugin)
|
||||
{
|
||||
/* Tell this plugin to finish initializing itself */
|
||||
@ -776,7 +791,7 @@ bool CPluginManager::UnloadPlugin(IPlugin *plugin)
|
||||
pListener->OnPluginDestroyed(pPlugin);
|
||||
}
|
||||
|
||||
m_plugins.remove(plugin);
|
||||
m_plugins.remove(pPlugin);
|
||||
sm_trie_delete(m_LoadLookup, pPlugin->m_filename);
|
||||
|
||||
delete pPlugin;
|
||||
|
@ -161,7 +161,7 @@ public:
|
||||
class CPluginIterator : public IPluginIterator
|
||||
{
|
||||
public:
|
||||
CPluginIterator(List<IPlugin *> *mylist);
|
||||
CPluginIterator(List<CPlugin *> *mylist);
|
||||
virtual ~CPluginIterator();
|
||||
virtual bool MorePlugins();
|
||||
virtual IPlugin *GetPlugin();
|
||||
@ -170,8 +170,8 @@ public:
|
||||
public:
|
||||
void Reset();
|
||||
private:
|
||||
List<IPlugin *> *mylist;
|
||||
List<IPlugin *>::iterator current;
|
||||
List<CPlugin *> *mylist;
|
||||
List<CPlugin *>::iterator current;
|
||||
};
|
||||
friend class CPluginManager::CPluginIterator;
|
||||
public: //IPluginManager
|
||||
@ -252,7 +252,7 @@ protected:
|
||||
void ReleaseFunctionToPool(CFunction *func);
|
||||
private:
|
||||
List<IPluginsListener *> m_listeners;
|
||||
List<IPlugin *> m_plugins;
|
||||
List<CPlugin *> m_plugins;
|
||||
List<sp_nativeinfo_t *> m_natives;
|
||||
CStack<CPluginManager::CPluginIterator *> m_iters;
|
||||
CStack<CFunction *> m_funcpool;
|
||||
|
Loading…
Reference in New Issue
Block a user