mana: fix plugin loading
This commit is contained in:
parent
a4761647cd
commit
3bc9819c14
1 changed files with 17 additions and 10 deletions
|
@ -367,19 +367,26 @@ PluginWrapper load_mana_plugin(const std::string &filename,
|
||||||
PluginWrapper result;
|
PluginWrapper result;
|
||||||
result.pluginHandle = boost::dll::shared_library(filename, boost::dll::load_mode::rtld_global);
|
result.pluginHandle = boost::dll::shared_library(filename, boost::dll::load_mode::rtld_global);
|
||||||
|
|
||||||
if (auto entryPoint = result.pluginHandle.get<mana_sink_plugin_t()>("mana_get_sink_plugin"))
|
try
|
||||||
{
|
{
|
||||||
std::vector<const char *> argv;
|
if (auto entryPoint = result.pluginHandle.get<mana_sink_plugin_t()>("mana_get_sink_plugin"))
|
||||||
for (const auto &arg: pluginArgs)
|
{
|
||||||
argv.push_back(arg.data());
|
std::vector<const char *> argv;
|
||||||
result.destSink = std::make_unique<mana::ManaCSink>(entryPoint(), argv.size(), argv.data());
|
for (const auto &arg: pluginArgs)
|
||||||
|
argv.push_back(arg.data());
|
||||||
|
result.destSink =
|
||||||
|
std::make_unique<mana::ManaCSink>(entryPoint(), argv.size(), argv.data());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (auto entryPoint = result.pluginHandle.get<mana::IManaPlugin *()>("mana_get_plugin"))
|
catch (const std::exception &e)
|
||||||
{
|
{
|
||||||
result.manaCppPlugin = std::unique_ptr<mana::IManaPlugin>(entryPoint());
|
if (auto entryPoint = result.pluginHandle.get<mana::IManaPlugin *()>("mana_get_plugin"))
|
||||||
if (!result.manaCppPlugin)
|
{
|
||||||
throw std::runtime_error("plugin {}: mana_get_plugin() returned nullptr");
|
result.manaCppPlugin = std::unique_ptr<mana::IManaPlugin>(entryPoint());
|
||||||
result.destSink = result.manaCppPlugin->makeSink();
|
if (!result.manaCppPlugin)
|
||||||
|
throw std::runtime_error("plugin {}: mana_get_plugin() returned nullptr");
|
||||||
|
result.destSink = result.manaCppPlugin->makeSink();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
Loading…
Reference in a new issue