X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fport_insert_ui.cc;h=ffe2d34f069b297e599e3cd21da4f6fb7d219c5d;hb=41827a546a3fd8c8fb4095845f6b80f1f36ce048;hp=5546fd533b53223aaba6e619eee1eec40cf5ce48;hpb=73192bc1a7ea55fa1864dc3826845b15c00dd2ec;p=ardour.git diff --git a/gtk2_ardour/port_insert_ui.cc b/gtk2_ardour/port_insert_ui.cc index 5546fd533b..ffe2d34f06 100644 --- a/gtk2_ardour/port_insert_ui.cc +++ b/gtk2_ardour/port_insert_ui.cc @@ -17,134 +17,130 @@ */ -#include #include -#include +#include +#include -#include "ardour/port_insert.h" -#include "ardour/session.h" -#include "ardour/io.h" #include "ardour/audioengine.h" -#include "ardour/track.h" -#include "ardour/audio_track.h" -#include "ardour/midi_track.h" #include "ardour/mtdm.h" -#include "ardour/data_type.h" -#include "ardour/port.h" -#include "ardour/bundle.h" +#include "ardour/port_insert.h" +#include "ardour/session.h" + +#include "gtkmm2ext/doi.h" #include "port_insert_ui.h" -#include "utils.h" #include "gui_thread.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; using namespace Gtk; PortInsertUI::PortInsertUI (Gtk::Window* parent, ARDOUR::Session* sess, boost::shared_ptr pi) - : _pi (pi) - , latency_button (_("Measure Latency")) - , input_selector (parent, sess, pi->input()) - , output_selector (parent, sess, pi->output()) + : _pi (pi) + , latency_button (_("Measure Latency")) + , input_selector (parent, sess, pi->input()) + , output_selector (parent, sess, pi->output()) { - latency_hbox.pack_start (latency_button, false, false); - latency_hbox.pack_start (latency_display, false, false); + latency_hbox.pack_start (latency_button, false, false); + latency_hbox.pack_start (latency_display, false, false); + latency_hbox.set_spacing (4); output_selector.set_min_height_divisor (2); input_selector.set_min_height_divisor (2); - notebook.append_page (output_selector, _("Send/Output")); - notebook.append_page (input_selector, _("Return/Input")); + notebook.append_page (output_selector, _("Send/Output")); + notebook.append_page (input_selector, _("Return/Input")); - notebook.set_current_page (0); - - set_spacing (12); - pack_start (notebook, true, true); - pack_start (latency_hbox, false, false); + notebook.set_current_page (0); - update_latency_display (); + set_spacing (12); + pack_start (notebook, true, true); + pack_start (latency_hbox, false, false); - latency_button.signal_toggled().connect (mem_fun (*this, &PortInsertUI::latency_button_toggled)); + update_latency_display (); + + latency_button.signal_toggled().connect (mem_fun (*this, &PortInsertUI::latency_button_toggled)); + latency_button.set_name (X_("MeasureLatencyButton")); } void PortInsertUI::update_latency_display () { - framecnt_t const sample_rate = input_selector.session()->engine().frame_rate(); - if (sample_rate == 0) { - latency_display.set_text (_("Disconnected from audio engine")); - } else { - char buf[64]; - snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", - (float)_pi->latency(), (float)_pi->latency() * 1000.0f/sample_rate); - latency_display.set_text(buf); - } + samplecnt_t const sample_rate = AudioEngine::instance()->sample_rate(); + if (sample_rate == 0) { + latency_display.set_text (_("Disconnected from audio engine")); + } else { + char buf[64]; + snprintf (buf, sizeof (buf), "%10.3lf samples %10.3lf ms", + (float)_pi->latency(), (float)_pi->latency() * 1000.0f/sample_rate); + latency_display.set_text(buf); + } } bool PortInsertUI::check_latency_measurement () { - MTDM* mtdm = _pi->mtdm (); + MTDM* mtdm = _pi->mtdm (); - if (mtdm->resolve () < 0) { - latency_display.set_text (_("No signal detected")); - return true; - } + if (mtdm->resolve () < 0) { + latency_display.set_text (_("No signal detected")); + return true; + } - if (mtdm->err () > 0.3) { - mtdm->invert (); - mtdm->resolve (); - } + if (mtdm->err () > 0.3) { + mtdm->invert (); + mtdm->resolve (); + } - char buf[128]; - framecnt_t const sample_rate = AudioEngine::instance()->frame_rate(); + char buf[128]; + samplecnt_t const sample_rate = AudioEngine::instance()->sample_rate(); - if (sample_rate == 0) { - latency_display.set_text (_("Disconnected from audio engine")); - _pi->stop_latency_detection (); - return false; - } + if (sample_rate == 0) { + latency_display.set_text (_("Disconnected from audio engine")); + _pi->stop_latency_detection (); + return false; + } - snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate); + snprintf (buf, sizeof (buf), "%10.3lf samples %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate); - bool solid = true; + bool solid = true; - if (mtdm->err () > 0.2) { - strcat (buf, " ??"); - solid = false; - } + if (mtdm->err () > 0.2) { + strcat (buf, " ??"); + solid = false; + } - if (mtdm->inv ()) { - strcat (buf, " (Inv)"); - solid = false; - } + if (mtdm->inv ()) { + strcat (buf, " (Inv)"); + solid = false; + } - if (solid) { - _pi->set_measured_latency (rint (mtdm->del())); - latency_button.set_active (false); - strcat (buf, " (set)"); - } + if (solid) { + _pi->set_measured_latency (rint (mtdm->del())); + latency_button.set_active (false); + strcat (buf, " (set)"); + } - latency_display.set_text (buf); + latency_display.set_text (buf); - return true; + return true; } void PortInsertUI::latency_button_toggled () { - if (latency_button.get_active ()) { + if (latency_button.get_active ()) { - _pi->start_latency_detection (); - latency_display.set_text (_("Detecting ...")); - latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &PortInsertUI::check_latency_measurement), 250); + _pi->start_latency_detection (); + latency_display.set_text (_("Detecting ...")); + latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &PortInsertUI::check_latency_measurement), 250); - } else { - _pi->stop_latency_detection (); - latency_timeout.disconnect (); - update_latency_display (); - } + } else { + _pi->stop_latency_detection (); + latency_timeout.disconnect (); + update_latency_display (); + } } void @@ -168,31 +164,26 @@ PortInsertWindow::PortInsertWindow (ARDOUR::Session* sess, boost::shared_ptrname(); set_title (title); get_vbox()->pack_start (_portinsertui); - signal_delete_event().connect (sigc::mem_fun (*this, &PortInsertWindow::wm_delete), false); + Gtk::Button* cancel_but = add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); + Gtk::Button* ok_but = add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); + + cancel_but->signal_clicked().connect (sigc::mem_fun (*this, &PortInsertWindow::cancel)); + ok_but->signal_clicked().connect (sigc::mem_fun (*this, &PortInsertWindow::accept)); - pi->DropReferences.connect (going_away_connection, invalidator (*this), boost::bind (&PortInsertWindow::plugin_going_away, this), gui_context()); + signal_delete_event().connect (sigc::mem_fun (*this, &PortInsertWindow::wm_delete), false); } bool PortInsertWindow::wm_delete (GdkEventAny* /*event*/) { accept (); - return true; -} - -void -PortInsertWindow::plugin_going_away () -{ - ENSURE_GUI_THREAD (*this, &PortInsertWindow::plugin_going_away) - - going_away_connection.disconnect (); - delete_when_idle (this); + return false; } void