Merge branch 'master' into windows
[ardour.git] / gtk2_ardour / ardour_ui_dialogs.cc
index fecc79d46b1f67cf39e6c097b9064a002e77b7db..1b39da19e2dbf7b0735ee04391196eb1998dadfb 100644 (file)
@@ -197,7 +197,9 @@ ARDOUR_UI::set_session (Session *s)
                editor_meter_peak_display.hide();
        }
 
-       if (_session && _session->master_out()) {
+       if (_session
+                       && _session->master_out()
+                       && _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) {
                editor_meter = new LevelMeterHBox(_session);
                editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
                editor_meter->clear_meters();
@@ -220,12 +222,17 @@ ARDOUR_UI::set_session (Session *s)
                editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false);
 
                if (Config->get_show_editor_meter()) {
+                       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();
-               } else {
-                       meter_box.hide();
-                       editor_meter_peak_display.hide();
+               } else if (meter_box.get_parent()) {
+                       transport_tearoff_hbox.remove (meter_box);
+                       transport_tearoff_hbox.remove (editor_meter_peak_display);
                }
+       } else if (meter_box.get_parent()) {
+               transport_tearoff_hbox.remove (meter_box);
+               transport_tearoff_hbox.remove (editor_meter_peak_display);
        }
 
 }