Use signal_toggled instead of signal_clicked in ThemeManager so a theme is only ...
[ardour.git] / gtk2_ardour / gain_meter.cc
index 8c765a28ad8db7d758399d1d485a7f19214c7ea2..f67682019ed082627a88f8e3a95c26d4d170b943 100644 (file)
@@ -32,6 +32,7 @@
 #include <gtkmm2ext/fastmeter.h>
 #include <gtkmm2ext/stop_signal.h>
 #include <gtkmm2ext/barcontroller.h>
+#include <gtkmm2ext/gtk_ui.h>
 #include <midi++/manager.h>
 #include <pbd/fastlog.h>
 
@@ -211,7 +212,7 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s)
        ResetAllPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_peak_display));
        ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display));
 
-       ThemeChanged.connect (mem_fun(*this, &GainMeter::redraw_pixmaps));
+       UI::instance()->theme_changed.connect (mem_fun(*this, &GainMeter::on_theme_changed));
 }
 
 void
@@ -233,7 +234,7 @@ GainMeter::set_width (Width w)
 Glib::RefPtr<Gdk::Pixmap>
 GainMeter::render_metrics (Gtk::Widget& w)
 {
-       cerr << "GainMeter::render_metrics() called, red = " << w.get_style()->get_bg(Gtk::STATE_NORMAL).get_red() << endl;//DEBUG
+       //cerr << "GainMeter::render_metrics() called, red = " << w.get_style()->get_bg(Gtk::STATE_NORMAL).get_red() << endl;//DEBUG
        Glib::RefPtr<Gdk::Window> win (w.get_window());
        Glib::RefPtr<Gdk::GC> fg_gc (w.get_style()->get_fg_gc (Gtk::STATE_NORMAL));
        Glib::RefPtr<Gdk::GC> bg_gc (w.get_style()->get_bg_gc (Gtk::STATE_NORMAL));
@@ -275,6 +276,10 @@ GainMeter::render_metrics (Gtk::Widget& w)
 gint
 GainMeter::meter_metrics_expose (GdkEventExpose *ev)
 {
+       /* Only draw dB scale if we're metering audio */
+       if (_io->n_inputs().n_audio() + _io->n_outputs().n_audio() == 0)
+               return true;
+
        static Glib::RefPtr<Gtk::Style> meter_style;
        
        if (style_changed) {
@@ -313,11 +318,10 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev)
        return true;
 }
 
-int
-GainMeter::redraw_pixmaps(string blah)
+void
+GainMeter::on_theme_changed()
 {
        style_changed = true;
-       return 0;
 }
 
 GainMeter::~GainMeter ()
@@ -421,12 +425,14 @@ GainMeter::setup_meters ()
        if ((r = dynamic_cast<Route*> (_io.get())) != 0) {
 
                switch (r->meter_point()) {
-               case MeterPreFader:
                case MeterInput:
-                       nmeters = r->n_inputs().n_audio();
+                       nmeters = r->n_inputs().n_total();
+                       break;
+               case MeterPreFader:
+                       nmeters = r->pre_fader_streams().n_total();
                        break;
                case MeterPostFader:
-                       nmeters = r->n_outputs().n_audio();
+                       nmeters = r->n_outputs().n_total();
                        break;
                }