Merge pull request #485 from peace-maker/plugin_unloading

Fix scheduled plugin unloading
This commit is contained in:
David Anderson
2016-02-29 10:53:26 -05:00
2 changed files with 3 additions and 8 deletions
+3 -7
View File
@@ -1435,11 +1435,7 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
bool CPluginManager::UnloadPlugin(IPlugin *plugin)
{
CPlugin *pPlugin = (CPlugin *)plugin;
return ScheduleUnload(pPlugin);
}
bool CPluginManager::ScheduleUnload(CPlugin *pPlugin)
{
// Should not be recursively removing.
assert(m_plugins.contains(pPlugin));
@@ -1460,8 +1456,8 @@ bool CPluginManager::ScheduleUnload(CPlugin *pPlugin)
if (any_active) {
pPlugin->SetWaitingToUnload();
ScheduleTaskForNextFrame([this, pPlugin] () -> void {
ScheduleUnload(pPlugin);
ScheduleTaskForNextFrame([this, pPlugin]() -> void {
UnloadPluginImpl(pPlugin);
});
return false;
}
@@ -1855,7 +1851,7 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const ICommandArg
}
else
{
rootmenu->ConsolePrint("[SM] Failed to unload plugin %s.", name);
rootmenu->ConsolePrint("[SM] Plugin %s will be unloaded on the next frame.", name);
}
return;
-1
View File
@@ -462,7 +462,6 @@ private:
bool RequireExtensions(CPlugin *pPlugin);
bool FindOrRequirePluginDeps(CPlugin *pPlugin);
bool ScheduleUnload(CPlugin *plugin);
void UnloadPluginImpl(CPlugin *plugin);
void Purge(CPlugin *plugin);