X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fplugin_manager.cc;h=ebf0ecab3cd83636259e406a10ef5865b6d62690;hb=0cd3bd4f194439a047f8ab6b7baaf38d118a1d85;hp=22e649e03e00b66b28c0ae7c8f339ea32817cab9;hpb=b5f7ae45bda38031f354ea1643ebc1cc22018907;p=ardour.git diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 22e649e03e..ebf0ecab3c 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -40,6 +40,7 @@ #include #include "pbd/pathscanner.h" +#include "pbd/whitespace.h" #include "ardour/ladspa.h" #include "ardour/session.h" @@ -141,6 +142,15 @@ PluginManager::PluginManager () BootMessage (_("Discovering Plugins")); } + +PluginManager::~PluginManager() +{ +#ifdef HAVE_SLV2 + delete _lv2_world; +#endif +} + + void PluginManager::refresh () { @@ -156,6 +166,8 @@ PluginManager::refresh () #ifdef HAVE_AUDIOUNITS au_refresh (); #endif + + PluginListChanged (); /* EMIT SIGNAL */ } void @@ -299,13 +311,12 @@ PluginManager::add_lrdf_data (const string &path) PathScanner scanner; vector* rdf_files; vector::iterator x; - string uri; rdf_files = scanner (path, rdf_filter, 0, true, true); if (rdf_files) { for (x = rdf_files->begin(); x != rdf_files->end (); ++x) { - uri = "file://" + **x; + const string uri(string("file://") + **x); if (lrdf_read_file(uri.c_str())) { warning << "Could not parse rdf file: " << uri << endmsg; @@ -598,7 +609,7 @@ PluginManager::save_statuses () break; } - ofs << ' ' << (*i).unique_id << ' '; + ofs << ' '; switch ((*i).status) { case Normal: @@ -611,7 +622,9 @@ PluginManager::save_statuses () ofs << "Hidden"; break; } - + + ofs << ' '; + ofs << (*i).unique_id;; ofs << endl; } @@ -628,12 +641,13 @@ PluginManager::load_statuses () if (!ifs) { return; } - + std::string stype; - std::string id; std::string sstatus; + std::string id; PluginType type; PluginStatusType status; + char buf[1024]; while (ifs) { @@ -642,15 +656,31 @@ PluginManager::load_statuses () break; } - ifs >> id; + + ifs >> sstatus; if (!ifs) { break; + } - ifs >> sstatus; + /* rest of the line is the plugin ID */ + + ifs.getline (buf, sizeof (buf), '\n'); if (!ifs) { break; + } + if (sstatus == "Normal") { + status = Normal; + } else if (sstatus == "Favorite") { + status = Favorite; + } else if (sstatus == "Hidden") { + status = Hidden; + } else { + error << string_compose (_("unknown plugin status type \"%1\" - all entries ignored"), sstatus) + << endmsg; + statuses.clear (); + break; } if (stype == "LADSPA") { @@ -666,21 +696,12 @@ PluginManager::load_statuses () << endmsg; continue; } - if (sstatus == "Normal") { - status = Normal; - } else if (sstatus == "Favorite") { - status = Favorite; - } else if (sstatus == "Hidden") { - status = Hidden; - } else { - error << string_compose (_("unknown plugin status type \"%1\" - ignored"), stype) - << endmsg; - continue; - } - + + id = buf; + strip_whitespace_edges (id); set_status (type, id, status); } - + ifs.close (); }