bsd lang segv fix, enable bsd lv2, lv2 gui enable fix, proxy/ffmpeg toggle resize...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / pluginlv2gui.C
index e8c4edb3832ebbfda43a7315b24ace86a7b84a5e..fd9a6f51174b1a42fad30b5d5b61abd5ff713916 100644 (file)
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
+#ifdef HAVE_LV2
 
 #include "clip.h"
 #include "cstrdup.h"
@@ -29,6 +30,7 @@
 #include "pluginlv2config.h"
 #include "pluginlv2gui.h"
 #include "pluginserver.h"
+#include "preferences.h"
 #include "samples.h"
 
 #include <ctype.h>
@@ -210,12 +212,8 @@ void PluginLV2ClientWindow::create_objects()
        BC_Title *title;
        int x = 10, y = 10, x1;
        add_subwindow(title = new BC_Title(x, y, client->title));
-#ifdef HAVE_LV2UI
        x1 = get_w() - BC_GenericButton::calculate_w(this, _("UI")) - 8;
-       add_subwindow(ui = new PluginLV2ClientUI(this, x1, y));
-#else
-       ui = 0;
-#endif
+       add_subwindow(client_ui = new PluginLV2ClientUI(this, x1, y));
        y += title->get_h() + 10;
        add_subwindow(varbl = new BC_Title(x, y, ""));
        add_subwindow(range = new BC_Title(x+160, y, ""));
@@ -231,7 +229,6 @@ void PluginLV2ClientWindow::create_objects()
        add_subwindow(slider = new PluginLV2ClientSlider(this, x1, y+10));
        y += pot->get_h() + 10;
 
-       client->init_lv2();
        client->load_configuration();
        client->config.update();
 
@@ -242,15 +239,19 @@ void PluginLV2ClientWindow::create_objects()
        add_subwindow(panel);
        panel->update();
        show_window(1);
+
+       if( client->server->mwindow->preferences->autostart_lv2ui ) {
+               client_ui->disable();
+               PluginLV2ParentUI *ui = get_ui();
+               ui->show();
+       }
 }
 
 int PluginLV2ClientWindow::resize_event(int w, int h)
 {
        int x1;
-#ifdef HAVE_LV2UI
-       x1 = w - ui->get_w() - 8;
-       ui->reposition_window(x1, ui->get_y());
-#endif
+       x1 = w - client_ui->get_w() - 8;
+       client_ui->reposition_window(x1, client_ui->get_y());
        x1 = w - reset->get_w() - 8;
        reset->reposition_window(x1, reset->get_y());
        x1 = w - apply->get_w() - 8;
@@ -311,7 +312,10 @@ void PluginLV2ClientWindow::update(PluginLV2Client_Opt *opt)
                cp += sprintf(cp, " )");
                float v = opt->get_value();
                sprintf(val, "%f", v);
+               float p = (max-min) / slider->get_w();
+               slider->set_precision(p);
                slider->update(slider->get_w(), v, min, max);
+               pot->set_precision(p);
                pot->update(v, min, max);
        }
        else {
@@ -351,3 +355,11 @@ void PluginLV2ClientWindow::lv2_set(int idx, float val)
        lv2_update();
 }
 
+void PluginLV2ClientWindow::lv2_ui_enable()
+{
+       lock_window("PluginLV2ClientWindow::lv2_update");
+       client_ui->enable();
+       unlock_window();
+}
+
+#endif