+
+ if (meter_box.get_parent()) {
+ transport_tearoff_hbox.remove (meter_box);
+ transport_tearoff_hbox.remove (editor_meter_peak_display);
+ }
+
+ if (editor_meter) {
+ meter_box.remove(*editor_meter);
+ delete editor_meter;
+ editor_meter = 0;
+ editor_meter_peak_display.hide();
+ }
+
+ if (meter_box.get_parent()) {
+ transport_tearoff_hbox.remove (meter_box);
+ transport_tearoff_hbox.remove (editor_meter_peak_display);
+ }
+
+ if (_session &&
+ _session->master_out() &&
+ _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) {
+
+ if (!ARDOUR::Profile->get_trx()) {
+ editor_meter = new LevelMeterHBox(_session);
+ editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
+ editor_meter->clear_meters();
+ editor_meter->set_type (_session->master_out()->meter_type());
+ editor_meter->setup_meters (30, 12, 6);
+ editor_meter->show();
+ meter_box.pack_start(*editor_meter);
+ }
+
+ ArdourMeter::ResetAllPeakDisplays.connect (sigc::mem_fun(*this, &ARDOUR_UI::reset_peak_display));
+ ArdourMeter::ResetRoutePeakDisplays.connect (sigc::mem_fun(*this, &ARDOUR_UI::reset_route_peak_display));
+ ArdourMeter::ResetGroupPeakDisplays.connect (sigc::mem_fun(*this, &ARDOUR_UI::reset_group_peak_display));
+
+ editor_meter_peak_display.set_name ("meterbridge peakindicator");
+ editor_meter_peak_display.unset_flags (Gtk::CAN_FOCUS);
+ editor_meter_peak_display.set_size_request (std::max(9.f, rintf(8.f * ui_scale)), -1);
+ editor_meter_peak_display.set_corner_radius (3.0);
+
+ editor_meter_max_peak = -INFINITY;
+ editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false);
+
+ if (ARDOUR_UI::config()->get_show_editor_meter() && !ARDOUR::Profile->get_trx()) {
+ transport_tearoff_hbox.pack_start (meter_box, false, false);
+ transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
+ meter_box.show();
+ editor_meter_peak_display.show();
+ }
+ }