canvas items must be able to use fractional positions when rendering.
[ardour.git] / gtk2_ardour / engine_dialog.cc
index 88f7892906c8feac6a46abde9586ad434191462b..a32ccf146e81a8486721af2e2ba9be1f14f879dd 100644 (file)
@@ -68,6 +68,7 @@ static const char* results_markup = X_("<span weight=\"bold\" size=\"larger\">%1
 
 EngineControl::EngineControl ()
        : ArdourDialog (_("Audio/MIDI Setup"))
+       , engine_status ("")
        , basic_packer (9, 4)
        , input_latency_adjustment (0, 0, 99999, 1)
        , input_latency (input_latency_adjustment)
@@ -248,6 +249,9 @@ EngineControl::EngineControl ()
        get_vbox()->set_border_width (12);
        get_vbox()->pack_start (notebook);
 
+       get_action_area()->pack_start (engine_status);
+       engine_status.show();
+
        /* need a special function to print "all available channels" when the
         * channel counts hit zero.
         */
@@ -263,9 +267,9 @@ EngineControl::EngineControl ()
        control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked));
        manage_control_app_sensitivity ();
 
-       cancel_button = add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
-       ok_button = add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
+       cancel_button = add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_CANCEL);
        apply_button = add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY);
+       ok_button = add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
 
        /* Pick up any existing audio setup configuration, if appropriate */
 
@@ -894,6 +898,9 @@ EngineControl::device_changed ()
        assert (backend);
        string device_name = device_combo.get_active_text ();
        vector<string> s;
+       
+       //the device name must be set FIRST so ASIO can populate buffersizes and the control panel button
+       backend->set_device_name(device_name);
 
        {
                PBD::Unwinder<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1);
@@ -1967,6 +1974,8 @@ EngineControl::check_audio_latency_measurement ()
                solid = false;
        }
 
+       lm_results.set_markup (string_compose (results_markup, buf));
+
        if (solid) {
                have_lm_results = true;
                end_latency_detection ();
@@ -1974,8 +1983,6 @@ EngineControl::check_audio_latency_measurement ()
                return false;
        }
 
-       lm_results.set_markup (string_compose (results_markup, buf));
-
        return true;
 }
 
@@ -2027,6 +2034,7 @@ EngineControl::check_midi_latency_measurement ()
                have_lm_results = true;
                end_latency_detection ();
                lm_use_button.set_sensitive (true);
+               lm_results.set_markup (string_compose (results_markup, buf));
                return false;
        } else if (mididm->processed () > 400) {
                have_lm_results = false;
@@ -2145,6 +2153,7 @@ EngineControl::engine_running ()
        connect_disconnect_button.show();
 
        started_at_least_once = true;
+       engine_status.set_markup(string_compose ("<span foreground=\"green\">%1</span>", _("Active")));
 }
 
 void
@@ -2159,6 +2168,7 @@ EngineControl::engine_stopped ()
 
        sample_rate_combo.set_sensitive (true);
        buffer_size_combo.set_sensitive (true);
+       engine_status.set_markup(string_compose ("<span foreground=\"red\">%1</span>", _("Inactive")));
 }
 
 void