don't bother doing port stuff if session is being deleted
[ardour.git] / gtk2_ardour / lv2_plugin_ui.h
index 0ddc86b217f73d4e8332bfa8c1fb6c6201cc100f..cad242a6f021dc4a09f126b1048810ad7e901f2e 100644 (file)
 #ifndef __ardour_lv2_plugin_ui_h__
 #define __ardour_lv2_plugin_ui_h__
 
+#ifdef WAF_BUILD
+#include "gtk2ardour-config.h"
+#endif
+
 #include <vector>
 #include <map>
 #include <list>
 #include <sigc++/signal.h>
 #include <gtkmm/widget.h>
 
-#include <ardour_dialog.h>
+#include "ardour_dialog.h"
 #include "ardour/types.h"
 #include "plugin_ui.h"
 
 #ifdef HAVE_SLV2
 
+#include "lv2_external_ui.h"
+
 namespace ARDOUR {
        class PluginInsert;
        class LV2Plugin;
@@ -56,24 +62,36 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox
        boost::shared_ptr<ARDOUR::LV2Plugin> _lv2;
        std::vector<int> _output_ports;
        sigc::connection _screen_update_connection;
-       
+
        Gtk::Widget*   _gui_widget;
        SLV2UIInstance _inst;
        float*         _values;
-       
+
+       struct lv2_external_ui_host _external_ui_host;
+       LV2_Feature _external_ui_feature;
+       struct lv2_external_ui* _external_ui_ptr;
+       Gtk::Window* _win_ptr;
+
+       static void on_external_ui_closed(LV2UI_Controller controller);
+
        static void lv2_ui_write(
                        LV2UI_Controller controller,
                        uint32_t         port_index,
                        uint32_t         buffer_size,
                        uint32_t         format,
                        const void*      buffer);
-       
+
+       void lv2ui_instantiate(const Glib::ustring& title);
+
        void parameter_changed(uint32_t, float);
        void parameter_update(uint32_t, float);
        bool configure_handler (GdkEventConfigure*);
        void save_plugin_setting ();
        void output_update();
        bool is_update_wanted(uint32_t index);
+
+       virtual bool on_window_show(const Glib::ustring& title);
+       virtual void on_window_hide();
 };
 
 #endif // HAVE_SLV2