Large nasty commit in the form of a 5000 line patch chock-full of completely
[ardour.git] / gtk2_ardour / gain_meter.cc
index 4cbb8a8f471a64b1fffb9a9ed1666deaa04381d4..b7746c4b19773f416e7f6e6ca65eaec0311ac12a 100644 (file)
@@ -47,6 +47,7 @@
 #include "i18n.h"
 
 using namespace ARDOUR;
+using namespace PBD;
 using namespace Gtkmm2ext;
 using namespace Gtk;
 using namespace sigc;
@@ -152,6 +153,8 @@ GainMeter::GainMeter (IO& io, Session& s)
        hbox.set_spacing (0);
        hbox.pack_start (*fader_vbox, false, false, 2);
 
+       set_width(Narrow);
+
        Route* r;
 
        if ((r = dynamic_cast<Route*> (&_io)) != 0) {
@@ -324,23 +327,27 @@ GainMeter::update_meters ()
        char buf[32];
        
        for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
-                if ((*i).packed) {
-                        peak = _io.peak_input_power (n);
+               if ((*i).packed) {
+                       peak = _io.peak_input_power (n);
 
                        (*i).meter->set (log_meter (peak), peak);
-                       
-                        if (peak > max_peak) {
-                                max_peak = peak;
-                                /* set peak display */
-                                snprintf (buf, sizeof(buf), "%.1f", max_peak);
-                                peak_display_label.set_text (buf);
-
-                                if (max_peak >= 0.0f) {
-                                        peak_display.set_name ("MixerStripPeakDisplayPeak");
-                                }
-                        }
-                }
-        }
+                                               
+                       if (peak > max_peak) {
+               max_peak = peak;
+                /* set peak display */
+                               if (max_peak <= -200.0f) {
+                                       peak_display_label.set_text (_("-inf"));
+                               } else {
+                                       snprintf (buf, sizeof(buf), "%.1f", max_peak);
+                                       peak_display_label.set_text (buf);
+                               }
+
+                               if (max_peak >= 0.0f) {
+                                       peak_display.set_name ("MixerStripPeakDisplayPeak");
+                               }
+                       }
+               }
+       }
 }
 
 void