Revert "Add HookPluginUnload() and UnhookPluginUnload() functions"
This reverts commit 2c2d219f3f07d31ba84aa88acfae353c82e75dec.
This commit is contained in:
@@ -1505,8 +1505,6 @@ void CPluginManager::Purge(CPlugin *plugin)
|
||||
(*iter)->OnPluginUnloaded(plugin);
|
||||
}
|
||||
|
||||
CallUnloadHooks(plugin);
|
||||
|
||||
plugin->DropEverything();
|
||||
|
||||
for (ListenerIter iter(m_listeners); !iter.done(); iter.next())
|
||||
@@ -1603,19 +1601,6 @@ void CPluginManager::OnSourceModShutdown()
|
||||
|
||||
forwardsys->ReleaseForward(m_pOnLibraryAdded);
|
||||
forwardsys->ReleaseForward(m_pOnLibraryRemoved);
|
||||
|
||||
{
|
||||
std::list<PluginUnloadHookInfo>::iterator iter = m_PluginUnloadHooks.begin();
|
||||
|
||||
while (iter!=m_PluginUnloadHooks.end())
|
||||
{
|
||||
forwardsys->ReleaseForward(iter->pForward);
|
||||
|
||||
iter++;
|
||||
}
|
||||
|
||||
m_PluginUnloadHooks.clear();
|
||||
}
|
||||
}
|
||||
|
||||
ConfigResult CPluginManager::OnSourceModConfigChanged(const char *key,
|
||||
@@ -2217,72 +2202,6 @@ bool CPluginManager::LibraryExists(const char *lib)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CPluginManager::HookPluginUnload(IPlugin *pPluginToHook, IPluginFunction *pHookFunction)
|
||||
{
|
||||
{
|
||||
std::list<PluginUnloadHookInfo>::iterator iter = m_PluginUnloadHooks.begin();
|
||||
|
||||
while (iter!=m_PluginUnloadHooks.end())
|
||||
{
|
||||
if(iter->pPluginTarget == pPluginToHook)
|
||||
{
|
||||
return iter->pForward->AddFunction(pHookFunction);
|
||||
}
|
||||
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
|
||||
IChangeableForward *pForward = forwardsys->CreateForwardEx(nullptr, ET_Hook, 1, nullptr, Param_Cell);
|
||||
|
||||
m_PluginUnloadHooks.push_back({pPluginToHook, pForward});
|
||||
|
||||
return pForward->AddFunction(pHookFunction);
|
||||
}
|
||||
|
||||
bool CPluginManager::UnhookPluginUnload(IPlugin *pPluginToUnhook, IPluginFunction *pHookFunction)
|
||||
{
|
||||
std::list<PluginUnloadHookInfo>::iterator iter = m_PluginUnloadHooks.begin();
|
||||
|
||||
while (iter!=m_PluginUnloadHooks.end())
|
||||
{
|
||||
if(iter->pPluginTarget == pPluginToUnhook)
|
||||
{
|
||||
return iter->pForward->RemoveFunction(pHookFunction);
|
||||
}
|
||||
|
||||
iter++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CPluginManager::CallUnloadHooks(IPlugin *pTarget)
|
||||
{
|
||||
std::list<PluginUnloadHookInfo>::iterator iter = m_PluginUnloadHooks.begin();
|
||||
|
||||
IChangeableForward *pForwardToCall;
|
||||
|
||||
while (iter!=m_PluginUnloadHooks.end())
|
||||
{
|
||||
// There can only be one unique
|
||||
if(iter->pPluginTarget == pTarget)
|
||||
{
|
||||
pForwardToCall = iter->pForward;
|
||||
|
||||
pForwardToCall->PushCell((cell_t)pTarget);
|
||||
pForwardToCall->Execute();
|
||||
|
||||
pForwardToCall->Cancel();
|
||||
m_PluginUnloadHooks.erase(iter);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
|
||||
void CPluginManager::AllPluginsLoaded()
|
||||
{
|
||||
for (PluginIter iter(m_plugins); !iter.done(); iter.next())
|
||||
|
||||
@@ -425,12 +425,6 @@ public:
|
||||
|
||||
bool LibraryExists(const char *lib);
|
||||
|
||||
bool HookPluginUnload(IPlugin *pPluginToHook, IPluginFunction *pHookFunction);
|
||||
|
||||
bool UnhookPluginUnload(IPlugin *pPluginToUnhook, IPluginFunction *pHookFunction);
|
||||
|
||||
void CallUnloadHooks(IPlugin *pTarget);
|
||||
|
||||
bool ReloadPlugin(CPlugin *pl, bool print=false);
|
||||
|
||||
void UnloadAll();
|
||||
@@ -529,12 +523,6 @@ private:
|
||||
// Forwards
|
||||
IForward *m_pOnLibraryAdded;
|
||||
IForward *m_pOnLibraryRemoved;
|
||||
struct PluginUnloadHookInfo
|
||||
{
|
||||
IPlugin *pPluginTarget;
|
||||
IChangeableForward *pForward;
|
||||
};
|
||||
std::list<PluginUnloadHookInfo> m_PluginUnloadHooks;
|
||||
};
|
||||
|
||||
extern CPluginManager g_PluginSys;
|
||||
|
||||
@@ -637,34 +637,6 @@ static cell_t FindPluginByNumber(IPluginContext *pContext, const cell_t *params)
|
||||
return pPlugin->GetMyHandle();
|
||||
}
|
||||
|
||||
static cell_t HookPluginUnload(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
IPlugin *pPlugin = GetPluginFromHandle(pContext, params[1]);
|
||||
|
||||
if (!pPlugin)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IPluginFunction *pCallback = pContext->GetFunctionById(params[3]);
|
||||
|
||||
return scripts->HookPluginUnload(pPlugin, pCallback);
|
||||
}
|
||||
|
||||
static cell_t UnhookPluginUnload(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
IPlugin *pPlugin = GetPluginFromHandle(pContext, params[1]);
|
||||
|
||||
if (!pPlugin)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IPluginFunction *pCallback = pContext->GetFunctionById(params[3]);
|
||||
|
||||
return scripts->UnhookPluginUnload(pPlugin, pCallback);
|
||||
}
|
||||
|
||||
static cell_t VerifyCoreVersion(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
return 4;
|
||||
@@ -997,8 +969,6 @@ REGISTER_NATIVES(coreNatives)
|
||||
{"LogToFileEx", LogToFileEx},
|
||||
{"GetExtensionFileStatus", GetExtensionFileStatus},
|
||||
{"FindPluginByNumber", FindPluginByNumber},
|
||||
{"HookPluginUnload", HookPluginUnload},
|
||||
{"UnhookPluginUnload", UnhookPluginUnload},
|
||||
{"VerifyCoreVersion", VerifyCoreVersion},
|
||||
{"GetFeatureStatus", GetFeatureStatus},
|
||||
{"RequireFeature", RequireFeature},
|
||||
|
||||
Reference in New Issue
Block a user