X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Flatency_gui.cc;h=849edae767dfa726499e5da887dd0b036083ca2c;hb=dab0dacc66dcc190b4408ba75e3807973582cbd6;hp=0146bfdaa8ebf2a17ecb4a32d0d27e920ce8228e;hpb=b5af3bb8e313e13166cc54c60a14e5492e674065;p=ardour.git diff --git a/gtk2_ardour/latency_gui.cc b/gtk2_ardour/latency_gui.cc index 0146bfdaa8..849edae767 100644 --- a/gtk2_ardour/latency_gui.cc +++ b/gtk2_ardour/latency_gui.cc @@ -1,7 +1,8 @@ #define __STDC_FORMAT_MACROS 1 #include -#include +#include +#include "ardour/latent.h" #include #include "latency_gui.h" @@ -11,7 +12,6 @@ using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; -using namespace sigc; using namespace ARDOUR; @@ -24,16 +24,19 @@ static const gchar *_unit_strings[] = { std::vector LatencyGUI::unit_strings; -void -LatencyGUI::latency_printer (char *buf, unsigned int bufsize) +std::string +LatencyBarController::get_label (int&) { - double nframes = adjustment.get_value(); + double const nframes = _latency_gui->adjustment.get_value(); + std::stringstream s; - if (nframes < (sample_rate / 1000.0)) { - snprintf (buf, bufsize, "%" PRId64 " samples", (nframes64_t) rint (nframes)); + if (nframes < (_latency_gui->sample_rate / 1000.0)) { + s << ((nframes64_t) rint (nframes)) << " samples"; } else { - snprintf (buf, bufsize, "%.2g msecs" , nframes / (sample_rate / 1000.0)); + s << std::fixed << std::setprecision (2) << (nframes / (_latency_gui->sample_rate / 1000.0)) << " msecs"; } + + return s.str (); } LatencyGUI::LatencyGUI (Latent& l, nframes64_t sr, nframes64_t psz) @@ -41,10 +44,11 @@ LatencyGUI::LatencyGUI (Latent& l, nframes64_t sr, nframes64_t psz) initial_value (_latent.signal_latency()), sample_rate (sr), period_size (psz), + ignored (new PBD::IgnorableControllable()), /* max 1 second, step by frames, page by msecs */ adjustment (initial_value, 0.0, sample_rate, 1.0, sample_rate / 1000.0f), - bc (adjustment, ignored, sigc::mem_fun (*this, &LatencyGUI::latency_printer)), - reset_button (_("Automatic")) + bc (adjustment, this), + reset_button (_("Reset")) { Widget* w; @@ -52,7 +56,7 @@ LatencyGUI::LatencyGUI (Latent& l, nframes64_t sr, nframes64_t psz) unit_strings = I18N (_unit_strings); } - set_popdown_strings (units_combo, unit_strings); + set_popdown_strings (units_combo, unit_strings); units_combo.set_active_text (unit_strings.front()); w = manage (new Image (Stock::ADD, ICON_SIZE_BUTTON)); @@ -71,11 +75,11 @@ LatencyGUI::LatencyGUI (Latent& l, nframes64_t sr, nframes64_t psz) hbox2.pack_start (plus_button); hbox2.pack_start (units_combo, true, true); - minus_button.signal_clicked().connect (bind (mem_fun (*this, &LatencyGUI::change_latency_from_button), -1)); - plus_button.signal_clicked().connect (bind (mem_fun (*this, &LatencyGUI::change_latency_from_button), 1)); - reset_button.signal_clicked().connect (mem_fun (*this, &LatencyGUI::reset)); + minus_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &LatencyGUI::change_latency_from_button), -1)); + plus_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &LatencyGUI::change_latency_from_button), 1)); + reset_button.signal_clicked().connect (sigc::mem_fun (*this, &LatencyGUI::reset)); - adjustment.signal_value_changed().connect (mem_fun (*this, &LatencyGUI::finish)); + adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &LatencyGUI::finish)); bc.set_size_request (-1, 25); bc.set_style (BarController::LeftToRight); @@ -114,7 +118,7 @@ void LatencyGUI::change_latency_from_button (int dir) { Glib::ustring unitstr = units_combo.get_active_text(); - double shift; + double shift = 0.0; if (unitstr == unit_strings[0]) { shift = 1; @@ -139,14 +143,14 @@ LatencyDialog::LatencyDialog (const Glib::ustring& title, Latent& l, nframes64_t : ArdourDialog (title, false, true), lwidget (l, sr, psz) { - + get_vbox()->pack_start (lwidget); add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (Stock::APPLY, RESPONSE_REJECT); add_button (Stock::OK, RESPONSE_ACCEPT); show_all (); - + while (true) { int ret = run ();