diff options
author | Robin Gareus <robin@gareus.org> | 2014-09-11 02:28:57 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-09-11 03:04:11 +0200 |
commit | c4a7d25b34aec71ab7d594af50f7b522518e0221 (patch) | |
tree | 2c66773f99a58f5de77ffbff739f53ea427398a8 | |
parent | 6f6e78284d7d1f3e2551d675f8f9a3f931b12731 (diff) |
properly retain LV2PluginInfo
-rw-r--r-- | libs/ardour/ardour/lv2_plugin.h | 3 | ||||
-rw-r--r-- | libs/ardour/lv2_plugin.cc | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index 59560ddd11..7d080fa8e2 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -23,6 +23,7 @@ #include <set> #include <string> #include <vector> +#include <boost/enable_shared_from_this.hpp> #include "ardour/plugin.h" #include "ardour/uri_map.h" @@ -272,7 +273,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee }; -class LIBARDOUR_API LV2PluginInfo : public PluginInfo { +class LIBARDOUR_API LV2PluginInfo : public PluginInfo , public boost::enable_shared_from_this<ARDOUR::LV2PluginInfo> { public: LV2PluginInfo (const char* plugin_uri); ~LV2PluginInfo (); diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 9a763bc2b3..b32d61dbc2 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -2066,7 +2066,7 @@ LV2PluginInfo::load(Session& session) if (!lp) { throw failed_constructor(); } plugin.reset(new LV2Plugin(session.engine(), session, lp, session.frame_rate())); lilv_node_free(uri); - plugin->set_info(PluginInfoPtr(new LV2PluginInfo(*this))); + plugin->set_info(PluginInfoPtr(shared_from_this ())); return plugin; } catch (failed_constructor& err) { return PluginPtr((Plugin*)0); |