Update recorded MIDI regions as notes arrive. Fixes one cause of infinite note-lengt...
[ardour.git] / libs / ardour / ardour / lv2_plugin.h
index 7daf4ed2b16654c7c3e958415eb5cae0261b08ea..329af1151fbef3449a48f8fdf27bb6273439d432 100644 (file)
@@ -26,9 +26,8 @@
 #include <string>
 #include <dlfcn.h>
 
-#include <sigc++/signal.h>
 
-#include "pbd/stateful.h" 
+#include "pbd/stateful.h"
 
 #include <jack/types.h>
 #include <slv2/slv2.h>
@@ -48,7 +47,7 @@ class LV2Plugin : public ARDOUR::Plugin
        ~LV2Plugin ();
 
        /* Plugin interface */
-       
+
        std::string unique_id() const;
        const char* label() const           { return slv2_value_as_string(_name); }
        const char* name() const            { return slv2_value_as_string(_name); }
@@ -65,15 +64,16 @@ class LV2Plugin : public ARDOUR::Plugin
 
        SLV2Plugin slv2_plugin()         { return _plugin; }
        SLV2UI     slv2_ui()             { return _ui; }
+       bool       is_external_ui() const;
        SLV2Port   slv2_port(uint32_t i) { return slv2_plugin_get_port_by_index(_plugin, i); }
 
        const char* port_symbol(uint32_t port);
-       
+
        const LV2_Feature* const* features() { return _features; }
 
        std::set<Evoral::Parameter> automatable() const;
 
-       void activate () { 
+       void activate () {
                if (!_was_activated) {
                        slv2_instance_activate(_instance);
                        _was_activated = true;
@@ -94,8 +94,8 @@ class LV2Plugin : public ARDOUR::Plugin
                _instance = NULL;
        }
 
-       void set_block_size (nframes_t nframes) {}
-       
+       int  set_block_size (nframes_t /*nframes*/) { return 0; }
+
        int connect_and_run (BufferSet& bufs,
                        ChanMapping in, ChanMapping out,
                        nframes_t nframes, nframes_t offset);
@@ -114,9 +114,9 @@ class LV2Plugin : public ARDOUR::Plugin
        static uint32_t midi_event_type() { return _midi_event_type; }
 
        XMLNode& get_state();
-       int      set_state(const XMLNode& node);
+       int      set_state(const XMLNode& node, int version);
        bool     save_preset(std::string uri);
-       bool     load_preset(const string uri);
+       bool     load_preset(const std::string& uri);
        virtual std::vector<Plugin::PresetRecord> get_presets();
 
        bool has_editor() const;
@@ -136,8 +136,8 @@ class LV2Plugin : public ARDOUR::Plugin
        float*                   _defaults;
        float*                   _latency_control_port;
        bool                     _was_activated;
-       vector<bool>             _port_is_input;
-       map<string,uint32_t>     _port_indices;
+       std::vector<bool>        _port_is_input;
+       std::map<std::string,uint32_t> _port_indices;
 
        typedef struct { const void* (*extension_data)(const char* uri); } LV2_DataAccess;
        LV2_DataAccess _data_access_extension_data;
@@ -174,14 +174,16 @@ struct LV2World {
        SLV2Value toggled;
        SLV2Value srate;
        SLV2Value gtk_gui;
+       SLV2Value external_gui;
+       SLV2Value logarithmic;
 };
 
 
 class LV2PluginInfo : public PluginInfo {
-public:        
+public:
        LV2PluginInfo (void* slv2_world, void* slv2_plugin);;
        ~LV2PluginInfo ();;
-       static PluginInfoList discover (void* slv2_world);
+       static PluginInfoList* discover (void* slv2_world);
 
        PluginPtr load (Session& session);