set midi-metric ticks depending on meter-type
[ardour.git] / gtk2_ardour / ardour_ui.cc
index 7f72725af8298fbc99b8a5fb5e15cfe6020cee71..6a000d298190820f2e2464540748b7826b89ac11 100644 (file)
@@ -181,6 +181,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
        , solo_alert_button (_("solo"))
        , feedback_alert_button (_("feedback"))
 
+       , editor_meter(0)
+
        , speaker_config_window (X_("speaker-config"), _("Speaker Configuration"))
        , theme_manager (X_("theme-manager"), _("Theme Manager"))
        , key_editor (X_("key-editor"), _("Key Bindings"))
@@ -214,6 +216,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
 
        editor = 0;
        mixer = 0;
+       meterbridge = 0;
        editor = 0;
        engine = 0;
        _session_is_new = false;
@@ -510,6 +513,7 @@ ARDOUR_UI::~ARDOUR_UI ()
        delete keyboard;
        delete editor;
        delete mixer;
+       delete meterbridge;
 
        stop_video_server();
 }
@@ -896,8 +900,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;
@@ -1027,11 +1030,14 @@ 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 */
+       if (editor_meter) {
+               editor_meter->update_meters();
+       }
        return TRUE;
 }
 
@@ -1487,7 +1493,14 @@ ARDOUR_UI::open_session ()
                        open_session_selector->set_current_folder(Config->get_default_session_parent_dir());
                }
 
-               open_session_selector->add_shortcut_folder (Config->get_default_session_parent_dir());
+               string default_session_folder = Config->get_default_session_parent_dir();
+               try {
+                       /* add_shortcut_folder throws an exception if the folder being added already has a shortcut */
+                       open_session_selector->add_shortcut_folder (default_session_folder);
+               }
+               catch (Glib::Error & e) {
+                       std::cerr << "open_session_selector->add_shortcut_folder (" << default_session_folder << ") threw Glib::Error " << e.what() << std::endl;
+               }
 
                FileFilter session_filter;
                session_filter.add_pattern ("*.ardour");
@@ -4106,3 +4119,29 @@ ARDOUR_UI::session_format_mismatch (std::string xml_path, std::string backup_pat
 
        msg.run ();
 }
+
+
+void
+ARDOUR_UI::reset_peak_display ()
+{
+       if (!_session || !_session->master_out() || !editor_meter) return;
+       editor_meter->clear_meters();
+}
+
+void
+ARDOUR_UI::reset_group_peak_display (RouteGroup* group)
+{
+       if (!_session || !_session->master_out()) return;
+       if (group == _session->master_out()->route_group()) {
+               reset_peak_display ();
+       }
+}
+
+void
+ARDOUR_UI::reset_route_peak_display (Route* route)
+{
+       if (!_session || !_session->master_out()) return;
+       if (_session->master_out().get() == route) {
+               reset_peak_display ();
+       }
+}