Exemplo n.º 1
0
ModuleInterface *ModuleManager::LoadModule(const wxString & path)
{
   wxDynamicLibrary *lib = new wxDynamicLibrary();

   if (lib->Load(path, wxDL_NOW))
   {
      bool success = false;
      ModuleMain audacityMain = (ModuleMain) lib->GetSymbol(wxSTRINGIZE_T(MODULE_ENTRY),
                                                            &success);
      if (success && audacityMain)
      {
         ModuleInterface *module = audacityMain(this, &path);
         if (module)
         {
            if (module->Initialize())
            {

               mDynModules[PluginManager::GetID(module)] = module;
               mLibs[module] = lib;

               return module;
            }
            module->Terminate();
            delete module;
         }
      }

      lib->Unload();
   }

   delete lib;

   return NULL;
}
Exemplo n.º 2
0
void ModuleManager::InitializeBuiltins()
{
   PluginManager & pm = PluginManager::Get();

   for (size_t i = 0, cnt = pBuiltinModuleList->GetCount(); i < cnt; i++)
   {
      ModuleInterface *module = ((ModuleMain) (*pBuiltinModuleList)[i])(this, NULL);

      if (module->Initialize())
      {
         // Register the provider
         const PluginID & id = pm.RegisterPlugin(module);

         // Need to remember it 
         mDynModules[id] = module;

         // Allow the module to auto-register children
         module->AutoRegisterPlugins(pm);
      }
   }
}