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
commit a7c7e72004
2 changed files with 3 additions and 8 deletions

View File

@ -1435,11 +1435,7 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
bool CPluginManager::UnloadPlugin(IPlugin *plugin) bool CPluginManager::UnloadPlugin(IPlugin *plugin)
{ {
CPlugin *pPlugin = (CPlugin *)plugin; CPlugin *pPlugin = (CPlugin *)plugin;
return ScheduleUnload(pPlugin);
}
bool CPluginManager::ScheduleUnload(CPlugin *pPlugin)
{
// Should not be recursively removing. // Should not be recursively removing.
assert(m_plugins.contains(pPlugin)); assert(m_plugins.contains(pPlugin));
@ -1460,8 +1456,8 @@ bool CPluginManager::ScheduleUnload(CPlugin *pPlugin)
if (any_active) { if (any_active) {
pPlugin->SetWaitingToUnload(); pPlugin->SetWaitingToUnload();
ScheduleTaskForNextFrame([this, pPlugin] () -> void { ScheduleTaskForNextFrame([this, pPlugin]() -> void {
ScheduleUnload(pPlugin); UnloadPluginImpl(pPlugin);
}); });
return false; return false;
} }
@ -1855,7 +1851,7 @@ void CPluginManager::OnRootConsoleCommand(const char *cmdname, const ICommandArg
} }
else else
{ {
rootmenu->ConsolePrint("[SM] Failed to unload plugin %s.", name); rootmenu->ConsolePrint("[SM] Plugin %s will be unloaded on the next frame.", name);
} }
return; return;

View File

@ -462,7 +462,6 @@ private:
bool RequireExtensions(CPlugin *pPlugin); bool RequireExtensions(CPlugin *pPlugin);
bool FindOrRequirePluginDeps(CPlugin *pPlugin); bool FindOrRequirePluginDeps(CPlugin *pPlugin);
bool ScheduleUnload(CPlugin *plugin);
void UnloadPluginImpl(CPlugin *plugin); void UnloadPluginImpl(CPlugin *plugin);
void Purge(CPlugin *plugin); void Purge(CPlugin *plugin);