diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-07-14 08:27:22 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-07-14 08:27:22 -0400 |
commit | 0aac62e013e15e380001dafae39d554f8765a4a1 (patch) | |
tree | 1d205e81e4f00f25e8f4ddc522642ded3478706a /gtk2_ardour | |
parent | 394f2b3ca71ca324fe89fab7c1caae1bd55a9143 (diff) | |
parent | 2106a12edd6dcdf1189b7cfd68b07a0761d77c46 (diff) |
Merge branch 'master' into windows
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 12 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/configinfo.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/configinfo.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 19 | ||||
-rw-r--r-- | gtk2_ardour/lv2_plugin_ui.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.cc | 33 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/startup.cc | 2 |
14 files changed, 80 insertions, 27 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 5bef863c95..e3655a0d7a 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -903,8 +903,7 @@ If you still wish to quit, please use the\n\n\ second_connection.disconnect (); point_one_second_connection.disconnect (); - point_oh_five_second_connection.disconnect (); - point_zero_one_second_connection.disconnect(); + point_zero_something_second_connection.disconnect(); } delete ARDOUR_UI::instance()->video_timeline; @@ -1034,9 +1033,9 @@ ARDOUR_UI::every_point_one_seconds () } gint -ARDOUR_UI::every_point_zero_one_seconds () +ARDOUR_UI::every_point_zero_something_seconds () { - // august 2007: actual update frequency: 40Hz, not 100Hz + // august 2007: actual update frequency: 25Hz (40ms), not 100Hz SuperRapidScreenUpdate(); /* EMIT_SIGNAL */ return TRUE; diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index dd025b6f8b..5817293b29 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -177,10 +177,17 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr static PublicEditor* _instance; static sigc::signal<void,bool> Blink; + + /** point_zero_one_seconds -- 10Hz ^= 100ms */ static sigc::signal<void> RapidScreenUpdate; + + /** point_zero_something_seconds -- currently 25Hz ^= 40ms */ static sigc::signal<void> SuperRapidScreenUpdate; + /** Emitted frequently with the audible frame, false, and the edit point as * parameters respectively. + * + * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config) */ static sigc::signal<void, framepos_t, bool, framepos_t> Clock; @@ -521,12 +528,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr gint every_second (); gint every_point_one_seconds (); - gint every_point_zero_one_seconds (); + gint every_point_zero_something_seconds (); sigc::connection second_connection; sigc::connection point_one_second_connection; - sigc::connection point_oh_five_second_connection; - sigc::connection point_zero_one_second_connection; + sigc::connection point_zero_something_second_connection; void open_session (); void open_recent_session (); diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 5422bb9957..8c78d6494d 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -183,7 +183,7 @@ ARDOUR_UI::set_session (Session *s) second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_second), 1000); point_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_one_seconds), 100); - point_zero_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_zero_one_seconds), 40); + point_zero_something_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_zero_something_seconds), 40); update_format (); } @@ -223,8 +223,7 @@ ARDOUR_UI::unload_session (bool hide_stuff) second_connection.disconnect (); point_one_second_connection.disconnect (); - point_oh_five_second_connection.disconnect (); - point_zero_one_second_connection.disconnect(); + point_zero_something_second_connection.disconnect(); ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false); diff --git a/gtk2_ardour/configinfo.cc b/gtk2_ardour/configinfo.cc index 29c7e8fe63..67f13a1f5b 100644 --- a/gtk2_ardour/configinfo.cc +++ b/gtk2_ardour/configinfo.cc @@ -31,9 +31,15 @@ ConfigInfoDialog::ConfigInfoDialog () text.get_buffer()->set_text (std::string (ARDOUR::ardour_config_info)); text.set_wrap_mode (Gtk::WRAP_WORD); text.show (); - text.set_size_request (300, 800); - get_vbox()->pack_start (text, true, true); + scroller.set_shadow_type(Gtk::SHADOW_NONE); + scroller.set_border_width(0); + scroller.add (text); + scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); + scroller.show(); + + get_vbox()->pack_start (scroller, true, true); + set_size_request (400, 600); add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_ACCEPT); } diff --git a/gtk2_ardour/configinfo.h b/gtk2_ardour/configinfo.h index 84f90b20a2..209392a8f1 100644 --- a/gtk2_ardour/configinfo.h +++ b/gtk2_ardour/configinfo.h @@ -18,6 +18,7 @@ */ #include <gtkmm/textview.h> +#include <gtkmm/scrolledwindow.h> #include "ardour_dialog.h" @@ -28,4 +29,5 @@ class ConfigInfoDialog : public ArdourDialog private: Gtk::TextView text; + Gtk::ScrolledWindow scroller; }; diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index ae6f03f210..36ed5e918e 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -1086,7 +1086,7 @@ GainMeter::meter_configuration_changed (ChanCount c) set_meter_strip_name ("AudioMidiTrackMetricsInactive"); } } - meter_clear_pattern_cache(); // XXX only once + meter_clear_pattern_cache(4); } void diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index c66a1fec38..6cea8f3c0b 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -659,7 +659,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat control_ui->display_label->set_name ("ParameterValueDisplay"); control_ui->display->add (*control_ui->display_label); - Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->display, "-99,99", 2, 2); + Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->display, "-888.8g", 2, 6); control_ui->display->show_all (); @@ -669,7 +669,17 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat MeterInfo * info = new MeterInfo(port_index); control_ui->meterinfo = info; - info->meter = new FastMeter (5, 5, FastMeter::Vertical); + info->meter = new FastMeter ( + 5, 5, FastMeter::Vertical, 0, + 0x0000aaff, + 0x008800ff, 0x008800ff, + 0x00ff00ff, 0x00ff00ff, + 0xcccc00ff, 0xcccc00ff, + 0xffaa00ff, 0xffaa00ff, + 0xff0000ff, + ARDOUR_UI::config()->canvasvar_MeterBackgroundBot.get(), + ARDOUR_UI::config()->canvasvar_MeterBackgroundTop.get() + ); info->min_unbound = desc.min_unbound; info->max_unbound = desc.max_unbound; @@ -680,6 +690,9 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat control_ui->vbox = manage (new VBox); control_ui->hbox = manage (new HBox); + control_ui->hbox->set_spacing(1); + control_ui->vbox->set_spacing(3); + control_ui->label.set_angle(90); control_ui->hbox->pack_start (control_ui->label, false, false); control_ui->hbox->pack_start (*info->meter, false, false); @@ -834,7 +847,7 @@ GenericPluginUI::start_updating (GdkEventAny*) { if (output_controls.size() > 0 ) { screen_update_connection.disconnect(); - screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect + screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (sigc::mem_fun(*this, &GenericPluginUI::output_update)); } return false; diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 839bc6a4b8..2fe817a6a0 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -144,7 +144,7 @@ LV2PluginUI::start_updating(GdkEventAny*) { if (!_output_ports.empty()) { _screen_update_connection.disconnect(); - _screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect + _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (sigc::mem_fun(*this, &LV2PluginUI::output_update)); } return false; @@ -322,7 +322,7 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title) if (_lv2->has_message_output()) { _lv2->enable_ui_emmission(); - ARDOUR_UI::instance()->RapidScreenUpdate.connect( + ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( sigc::mem_fun(*this, &LV2PluginUI::update_timeout)); } } @@ -432,7 +432,7 @@ LV2PluginUI::on_window_show(const std::string& title) LV2_EXTERNAL_UI_SHOW(_external_ui_ptr); _screen_update_connection.disconnect(); - _screen_update_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect + _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (sigc::mem_fun(*this, &LV2PluginUI::output_update)); return false; } else { diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 9de01146b0..f749927e9a 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -485,9 +485,34 @@ gint meter_expose_metrics (GdkEventExpose *ev, std::vector<ARDOUR::DataType> typ return true; } -void meter_clear_pattern_cache() { - // TODO allow to clear meterbridge "*Left|Right" patterns independenly - metric_patterns.clear(); - ticks_patterns.clear(); +void meter_clear_pattern_cache(int which) { + MetricPatterns::iterator i = metric_patterns.begin(); + TickPatterns::iterator j = ticks_patterns.begin(); + + while (i != metric_patterns.end()) { + int m = 4; + std::string n = i->first; + if (n.substr(n.length() - 4) == "Left") { m = 1; } + if (n.substr(n.length() - 5) == "Right") { m = 2; } + if (which & m) { + cairo_pattern_destroy(i->second); + metric_patterns.erase(i++); + } else { + ++i; + } + } + + while (j != ticks_patterns.end()) { + int m = 4; + std::string n = j->first; + if (n.substr(n.length() - 4) == "Left") { m = 1; } + if (n.substr(n.length() - 5) == "Right") { m = 2; } + if (which & m) { + cairo_pattern_destroy(j->second); + ticks_patterns.erase(j++); + } else { + ++j; + } + } RedrawMetrics(); } diff --git a/gtk2_ardour/meter_patterns.h b/gtk2_ardour/meter_patterns.h index df755f7ace..a664f478f2 100644 --- a/gtk2_ardour/meter_patterns.h +++ b/gtk2_ardour/meter_patterns.h @@ -40,7 +40,7 @@ cairo_pattern_t* meter_render_metrics (Gtk::Widget& w, std::vector<ARDOUR::DataT gint meter_expose_ticks (GdkEventExpose *ev, std::vector<ARDOUR::DataType> types, Gtk::DrawingArea *mta); gint meter_expose_metrics (GdkEventExpose *ev, std::vector<ARDOUR::DataType> types, Gtk::DrawingArea *mma); -void meter_clear_pattern_cache(); +void meter_clear_pattern_cache(int which=7); #endif diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index a4cc56d61c..88a946585a 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -372,14 +372,12 @@ MeterStrip::meter_configuration_changed (ChanCount c) void MeterStrip::on_size_request (Gtk::Requisition* r) { - meter_clear_pattern_cache(); VBox::on_size_request(r); } void MeterStrip::on_size_allocate (Gtk::Allocation& a) { - meter_clear_pattern_cache(); const int wh = a.get_height(); int nh = ceilf(wh * .11f); if (nh < 52) nh = 52; diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 74c13f45eb..24b21656d1 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -309,6 +309,7 @@ Meterbridge::on_scroll_event (GdkEventScroll* ev) void Meterbridge::scroll_left () { + if (!scroller.get_hscrollbar()) return; Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); /* stupid GTK: can't rely on clamping across versions */ scroller.get_hscrollbar()->set_value (max (adj->get_lower(), adj->get_value() - adj->get_step_increment())); @@ -317,6 +318,7 @@ Meterbridge::scroll_left () void Meterbridge::scroll_right () { + if (!scroller.get_hscrollbar()) return; Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); /* stupid GTK: can't rely on clamping across versions */ scroller.get_hscrollbar()->set_value (min (adj->get_upper(), adj->get_value() + adj->get_step_increment())); @@ -325,6 +327,7 @@ Meterbridge::scroll_right () void Meterbridge::on_size_request (Gtk::Requisition* r) { + meter_clear_pattern_cache(3); Gtk::Window::on_size_request(r); Gdk::Geometry geom; diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index f206014eea..be43a3d6a0 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1666,6 +1666,7 @@ Mixer_UI::pane_allocation_handler (Allocation&, Gtk::Paned* which) void Mixer_UI::scroll_left () { + if (!scroller.get_hscrollbar()) return; Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); /* stupid GTK: can't rely on clamping across versions */ scroller.get_hscrollbar()->set_value (max (adj->get_lower(), adj->get_value() - adj->get_step_increment())); @@ -1674,6 +1675,7 @@ Mixer_UI::scroll_left () void Mixer_UI::scroll_right () { + if (!scroller.get_hscrollbar()) return; Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); /* stupid GTK: can't rely on clamping across versions */ scroller.get_hscrollbar()->set_value (min (adj->get_upper(), adj->get_value() + adj->get_step_increment())); diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 6f0b1cfaab..ca598ba949 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -591,7 +591,7 @@ ArdourStartup::setup_initial_choice_page () ic_vbox.show_all (); initial_choice_index = append_page (ic_vbox); - set_page_title (ic_vbox, _("What would you like to do ?")); + set_page_title (ic_vbox, string_compose("%1 %2", PROGRAM_NAME, VERSIONSTRING)); set_page_header_image (ic_vbox, icon_pixbuf); /* user could just click on "Forward" if default |