properly retain LV2PluginInfo
authorRobin Gareus <robin@gareus.org>
Thu, 11 Sep 2014 00:28:57 +0000 (02:28 +0200)
committerRobin Gareus <robin@gareus.org>
Thu, 11 Sep 2014 01:04:11 +0000 (03:04 +0200)
libs/ardour/ardour/lv2_plugin.h
libs/ardour/lv2_plugin.cc

index 59560ddd11e2cf1842b5ca5dea628acc8355e006..7d080fa8e23d2210004b99f933485b285c24ade8 100644 (file)
@@ -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 ();
index 9a763bc2b38caea6ae20266a80ca41398eade29c..b32d61dbc2f279b5217a2194d642434d85a04de2 100644 (file)
@@ -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);