use new canvas meter in push2 track mix layout
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 25 Sep 2016 20:02:47 +0000 (15:02 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 19:59:32 +0000 (14:59 -0500)
libs/surfaces/push2/track_mix.cc
libs/surfaces/push2/track_mix.h
libs/surfaces/push2/wscript

index 72f2954d0968752d98b49b8ede5eb5c7df576a28..6bfd3c5f0478d096752b53299e0053bc2f251c56 100644 (file)
 #include "gtkmm2ext/gui_thread.h"
 #include "gtkmm2ext/rgb_macros.h"
 
+#include "canvas/box.h"
 #include "canvas/line.h"
+#include "canvas/meter.h"
 #include "canvas/rectangle.h"
 #include "canvas/text.h"
 
 #include "canvas.h"
 #include "knob.h"
+#include "level_meter.h"
 #include "menu.h"
-#include "meter.h"
 #include "push2.h"
 #include "track_mix.h"
 #include "utils.h"
@@ -140,7 +142,7 @@ TrackMixLayout::TrackMixLayout (Push2& p, Session& s)
        name_text->set_font_description (fd);
        name_text->set_position (Duple (10 + (4*Push2Canvas::inter_button_spacing()), 2));
 
-       meter = new Meter (this, 24, 32, Meter::Horizontal, 200);
+       meter = new LevelMeter (p2, this, 200, ArdourCanvas::Meter::Horizontal);
        meter->set_position (Duple (10 + (4 * Push2Canvas::inter_button_spacing()), 50));
 
        ControlProtocol::StripableSelectionChanged.connect (selection_connection, invalidator (*this), boost::bind (&TrackMixLayout::selection_changed, this), &p2);
@@ -426,6 +428,10 @@ TrackMixLayout::set_stripable (boost::shared_ptr<Stripable> s)
                solo_iso_change ();
                solo_safe_change ();
                monitoring_change ();
+
+               meter->set_meter (stripable->peak_meter ().get());
+       } else {
+               meter->set_meter (0);
        }
 }
 
@@ -507,12 +513,5 @@ TrackMixLayout::update_meters ()
                return;
        }
 
-       boost::shared_ptr<PeakMeter> peak_meter = stripable->peak_meter ();
-
-       if (!peak_meter) {
-               return;
-       }
-
-       const float mpeak = peak_meter->meter_level (0, MeterPeak);
-       meter->set (DSP::log_meter (mpeak));
+       meter->update_meters ();
 }
index ffc20aca5555d092f6c721384e4b56d8a706e079..8ba95344b0a296cff40c5e0f6a0c3bee2f130a68 100644 (file)
@@ -32,12 +32,13 @@ namespace ArdourCanvas {
        class Rectangle;
        class Text;
        class Line;
+       class VBox;
 }
 
 namespace ArdourSurface {
 
 class Push2Knob;
-class Meter;
+class LevelMeter;
 
 class TrackMixLayout : public Push2Layout
 {
@@ -73,7 +74,7 @@ class TrackMixLayout : public Push2Layout
        uint8_t selection_color;
 
        Push2Knob* knobs[8];
-       Meter* meter;
+       LevelMeter* meter;
 
        void stripable_property_change (PBD::PropertyChange const& what_changed);
        void simple_control_change (boost::shared_ptr<ARDOUR::AutomationControl> ac, Push2::ButtonID bid);
index 5d8bb8336194df923e88d5962c79d3a5c6f3b4b2..a29ccd44926a1e5ec04d04c050c2bee08ac595a6 100644 (file)
@@ -26,12 +26,12 @@ def build(bld):
            interface.cc
             midi_byte_array.cc
             leds.cc
+            level_meter.cc
            gui.cc
            knob.cc
            layout.cc
            mode.cc
            menu.cc
-           meter.cc
            mix.cc
            scale.cc
            splash.cc