Make start_touch() truly idempotent
[ardour.git] / libs / ardour / ardour / lv2_plugin.h
index 27ed9bbd29d94000600f78bee48021ea863bf51e..202ddbb2401a4cba328c5c42fd618c24016f06f7 100644 (file)
@@ -63,6 +63,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        LV2Plugin (const LV2Plugin &);
        ~LV2Plugin ();
 
+       static bool force_state_save;
+
        std::string unique_id () const;
        const char* uri () const;
        const char* label () const;
@@ -276,6 +278,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
 
 #ifdef LV2_EXTENDED
        const LV2_Inline_Display_Interface* _display_interface;
+       const LV2_Midnam_Interface* _midname_interface;
 #endif
 
        typedef struct {
@@ -292,6 +295,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        LV2_Feature    _def_state_feature;
 #ifdef LV2_EXTENDED
        LV2_Feature    _queue_draw_feature;
+       LV2_Feature    _midnam_feature;
 #endif
 
        // Options passed to plugin
@@ -312,13 +316,17 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
 
        void init (const void* c_plugin, framecnt_t rate);
        void allocate_atom_event_buffers ();
-       void run (pframes_t nsamples);
+       void run (pframes_t nsamples, bool sync_work = false);
 
        void load_supported_properties(PropertyDescriptors& descs);
 
 #ifdef LV2_EXTENDED
        bool has_inline_display ();
        Plugin::Display_Image_Surface* render_inline_display (uint32_t, uint32_t);
+
+       bool has_midnam ();
+       bool read_midnam ();
+       std::string midnam_model ();
 #endif
 
        void latency_compute_run ();