fix errors in manual conflict resolution
[ardour.git] / libs / ardour / lv2_plugin.cc
index a0720044d4bf02a83a37acc224edd5a05d18d037..33b02a76e3b2174958448b4e16505c2b7c293ebe 100644 (file)
 #include <cstdlib>
 #include <cstring>
 
-#include <giomm/file.h>
+#include <glib/gstdio.h>
 #include <glib/gprintf.h>
 #include <glibmm.h>
 
 #include <boost/utility.hpp>
 
+#include "pbd/clear_dir.h"
 #include "pbd/pathscanner.h"
 #include "pbd/compose.h"
 #include "pbd/error.h"
@@ -47,7 +48,7 @@
 #include "ardour/types.h"
 #include "ardour/utils.h"
 #include "ardour/worker.h"
-#include "ardour/lv2_bundled_search_path.h"
+#include "ardour/search_paths.h"
 
 #include "i18n.h"
 #include <locale.h>
@@ -880,27 +881,6 @@ LV2Plugin::lv2_state_make_path(LV2_State_Make_Path_Handle handle,
        return g_strndup(abs_path.c_str(), abs_path.length());
 }
 
-static void
-remove_directory(const std::string& path)
-{
-       if (!Glib::file_test(path, Glib::FILE_TEST_IS_DIR)) {
-               warning << string_compose("\"%1\" is not a directory", path) << endmsg;
-               return;
-       }
-
-       Glib::RefPtr<Gio::File>           dir = Gio::File::create_for_path(path);
-       Glib::RefPtr<Gio::FileEnumerator> e   = dir->enumerate_children();
-       Glib::RefPtr<Gio::FileInfo>       fi;
-       while ((fi = e->next_file())) {
-               if (fi->get_type() == Gio::FILE_TYPE_DIRECTORY) {
-                       remove_directory(fi->get_name());
-               } else {
-                       dir->get_child(fi->get_name())->remove();
-               }
-       }
-       dir->remove();
-}
-
 void
 LV2Plugin::add_state(XMLNode* root) const
 {
@@ -952,7 +932,7 @@ LV2Plugin::add_state(XMLNode* root) const
                } else {
                        // State is identical, decrement version and nuke directory
                        lilv_state_free(state);
-                       remove_directory(new_dir);
+                       PBD::remove_directory(new_dir);
                        --_state_version;
                }
 
@@ -1114,7 +1094,7 @@ LV2Plugin::do_remove_preset(string name)
                        name + ".ttl"
                )
        );
-       unlink(preset_file.c_str());
+       ::g_unlink(preset_file.c_str());
 }
 
 bool
@@ -1142,16 +1122,16 @@ LV2Plugin::write_to(RingBuffer<uint8_t>* dest,
                     uint32_t             size,
                     const uint8_t*       body)
 {
-       const uint32_t buf_size = sizeof(UIMessage) + size;
-       uint8_t        buf[buf_size];
+       const uint32_t  buf_size = sizeof(UIMessage) + size;
+       vector<uint8_t> buf(buf_size);
 
-       UIMessage* msg = (UIMessage*)buf;
+       UIMessage* msg = (UIMessage*)&buf[0];
        msg->index    = index;
        msg->protocol = protocol;
        msg->size     = size;
        memcpy(msg + 1, body, size);
 
-       return (dest->write(buf, buf_size) == buf_size);
+       return (dest->write(&buf[0], buf_size) == buf_size);
 }
 
 bool
@@ -1230,13 +1210,13 @@ LV2Plugin::emit_to_ui(void* controller, UIMessageSink sink)
                        error << "Error reading from Plugin=>UI RingBuffer" << endmsg;
                        break;
                }
-               uint8_t body[msg.size];
-               if (_to_ui->read(body, msg.size) != msg.size) {
+               vector<uint8_t> body(msg.size);
+               if (_to_ui->read(&body[0], msg.size) != msg.size) {
                        error << "Error reading from Plugin=>UI RingBuffer" << endmsg;
                        break;
                }
 
-               sink(controller, msg.index, msg.size, msg.protocol, body);
+               sink(controller, msg.index, msg.size, msg.protocol, &body[0]);
 
                read_space -= sizeof(msg) + msg.size;
        }
@@ -1719,15 +1699,15 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
                                error << "Error reading from UI=>Plugin RingBuffer" << endmsg;
                                break;
                        }
-                       uint8_t body[msg.size];
-                       if (_from_ui->read(body, msg.size) != msg.size) {
+                       vector<uint8_t> body(msg.size);
+                       if (_from_ui->read(&body[0], msg.size) != msg.size) {
                                error << "Error reading from UI=>Plugin RingBuffer" << endmsg;
                                break;
                        }
                        if (msg.protocol == urids.atom_eventTransfer) {
                                LV2_Evbuf*            buf  = _ev_buffers[msg.index];
                                LV2_Evbuf_Iterator    i    = lv2_evbuf_end(buf);
-                               const LV2_Atom* const atom = (const LV2_Atom*)body;
+                               const LV2_Atom* const atom = (const LV2_Atom*)&body[0];
                                if (!lv2_evbuf_write(&i, nframes, 0, atom->type, atom->size,
                                                (const uint8_t*)(atom + 1))) {
                                        error << "Failed to write data to LV2 event buffer\n";
@@ -2037,7 +2017,7 @@ LV2World::load_bundled_plugins()
                vector<string *> *plugin_objects = scanner (ARDOUR::lv2_bundled_search_path().to_string(), lv2_filter, 0, true, true);
                if (plugin_objects) {
                        for ( vector<string *>::iterator x = plugin_objects->begin(); x != plugin_objects->end (); ++x) {
-#ifdef WINDOWS
+#ifdef PLATFORM_WINDOWS
                                string uri = "file:///" + **x + "/";
 #else
                                string uri = "file://" + **x + "/";
@@ -2089,7 +2069,9 @@ LV2PluginInfo::discover()
        PluginInfoList*    plugs   = new PluginInfoList;
        const LilvPlugins* plugins = lilv_world_get_all_plugins(_world.world);
 
-       info << "LV2: Discovering " << lilv_plugins_size(plugins) << " plugins" << endmsg;
+       if (!Config->get_show_plugin_scan_window()) {
+               info << "LV2: Discovering " << lilv_plugins_size(plugins) << " plugins" << endmsg;
+       }
 
        LILV_FOREACH(plugins, i, plugins) {
                const LilvPlugin* p = lilv_plugins_get(plugins, i);
@@ -2107,6 +2089,7 @@ LV2PluginInfo::discover()
 
                info->name = string(lilv_node_as_string(name));
                lilv_node_free(name);
+               ARDOUR::PluginScanMessage(_("LV2"), info->name, false);
 
                const LilvPluginClass* pclass = lilv_plugin_get_class(p);
                const LilvNode*        label  = lilv_plugin_class_get_label(pclass);