diff -r a8b00b04261c -r e244337a9b38 core/systems/ForwardSys.cpp --- a/core/systems/ForwardSys.cpp Fri Jan 19 05:48:08 2007 +0000 +++ b/core/systems/ForwardSys.cpp Fri Jan 19 08:22:44 2007 +0000 @@ -71,7 +71,7 @@ for (iter=m_managed.begin(); iter!=m_managed.end(); iter++) { fwd = (*iter); - IPluginFunction *pFunc = plugin->GetFunctionByName(fwd->GetForwardName()); + IPluginFunction *pFunc = plugin->GetBaseContext()->GetFunctionByName(fwd->GetForwardName()); if (pFunc) { fwd->AddFunction(pFunc); @@ -256,7 +256,8 @@ for (iter=m_functions.begin(); iter!=m_functions.end(); iter++) { func = (*iter); - if (func->GetParentPlugin()->GetStatus() == Plugin_Paused) + /* Ugh... */ + if (!func->GetParentContext()->IsRunnable()) { continue; } @@ -565,15 +566,10 @@ m_errstate = SP_ERROR_NONE; } -bool CForward::AddFunction(sp_context_t *ctx, funcid_t index) +bool CForward::AddFunction(IPluginContext *pContext, funcid_t index) { - IPlugin *pPlugin = g_PluginSys.FindPluginByContext(ctx); - if (!pPlugin) - { - return false; - } + IPluginFunction *pFunc = pContext->GetFunctionById(index); - IPluginFunction *pFunc = pPlugin->GetFunctionById(index); if (!pFunc) { return false; @@ -614,10 +610,11 @@ FuncIter iter; IPluginFunction *func; unsigned int removed = 0; + IPluginContext *pContext = plugin->GetBaseContext(); for (iter=m_functions.begin(); iter!=m_functions.end();) { func = (*iter); - if (func->GetParentPlugin() == plugin) + if (func->GetParentContext() == pContext) { iter = m_functions.erase(iter); removed++;