core/systems/PluginSys.cpp
changeset 213 2bec1ff85d06
parent 211 4c77142eaf36
child 216 38b1bdbc5bc9
     1.1 --- a/core/systems/PluginSys.cpp	Fri Dec 15 13:45:21 2006 +0000
     1.2 +++ b/core/systems/PluginSys.cpp	Fri Dec 15 13:53:58 2006 +0000
     1.3 @@ -444,7 +444,7 @@
     1.4   * PLUGIN ITERATOR *
     1.5   *******************/
     1.6  
     1.7 -CPluginManager::CPluginIterator::CPluginIterator(List<IPlugin *> *_mylist)
     1.8 +CPluginManager::CPluginIterator::CPluginIterator(List<CPlugin *> *_mylist)
     1.9  {
    1.10  	mylist = _mylist;
    1.11  }
    1.12 @@ -495,7 +495,7 @@
    1.13  }
    1.14  
    1.15  
    1.16 -void CPluginManager::LoadAll_FirstPass( const char *config, const char *basedir )
    1.17 +void CPluginManager::LoadAll_FirstPass(const char *config, const char *basedir)
    1.18  {
    1.19  	/* First read in the database of plugin settings */
    1.20  	SMCParseError err;
    1.21 @@ -730,6 +730,21 @@
    1.22  	}
    1.23  }
    1.24  
    1.25 +void CPluginManager::LoadAll_SecondPass()
    1.26 +{
    1.27 +	List<CPlugin *>::iterator iter;
    1.28 +	CPlugin *pPlugin;
    1.29 +
    1.30 +	for (iter=m_plugins.begin(); iter!=m_plugins.end(); iter++)
    1.31 +	{
    1.32 +		pPlugin = (*iter);
    1.33 +		if (pPlugin->GetStatus() == Plugin_Loaded)
    1.34 +		{
    1.35 +			RunSecondPass(pPlugin);
    1.36 +		}
    1.37 +	}
    1.38 +}
    1.39 +
    1.40  void CPluginManager::RunSecondPass(CPlugin *pPlugin)
    1.41  {
    1.42  	/* Tell this plugin to finish initializing itself */
    1.43 @@ -776,7 +791,7 @@
    1.44  		pListener->OnPluginDestroyed(pPlugin);
    1.45  	}
    1.46  
    1.47 -	m_plugins.remove(plugin);
    1.48 +	m_plugins.remove(pPlugin);
    1.49  	sm_trie_delete(m_LoadLookup, pPlugin->m_filename);
    1.50  	
    1.51  	delete pPlugin;