summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.cc17
-rw-r--r--gtk2_ardour/ardour_ui.h5
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc5
-rw-r--r--gtk2_ardour/engine_dialog.cc52
-rw-r--r--gtk2_ardour/engine_dialog.h3
-rw-r--r--gtk2_ardour/startup.cc2
-rw-r--r--gtk2_ardour/startup.h2
7 files changed, 46 insertions, 40 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 9eae8b4268..b7d6459ae2 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -214,6 +214,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
}
ui_config = new UIConfiguration();
+ _audio_midi_setup = new EngineControl;
editor = 0;
mixer = 0;
@@ -4145,3 +4146,19 @@ ARDOUR_UI::reset_route_peak_display (Route* route)
reset_peak_display ();
}
}
+
+EngineControl*
+ARDOUR_UI::audio_midi_setup_widget ()
+{
+ /* remove widget from any existing parent, since it is about
+ to be packed somewhere else.
+ */
+
+ Gtk::Container* parent = _audio_midi_setup->get_parent ();
+
+ if (parent) {
+ parent->remove (*_audio_midi_setup);
+ }
+
+ return _audio_midi_setup;
+}
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index f8b47bd3e8..6be0d39848 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -90,6 +90,7 @@ class BigClockWindow;
class BundleManager;
class ButtonJoiner;
class ConnectionEditor;
+class EngineControl;
class KeyEditor;
class LocationUIWindow;
class MainClock;
@@ -288,6 +289,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
const std::string& announce_string() const { return _announce_string; }
+ EngineControl* audio_midi_setup_widget();
+
protected:
friend class PublicEditor;
@@ -748,6 +751,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
std::string _announce_string;
void check_announcements ();
+
+ EngineControl* _audio_midi_setup;
};
#endif /* __ardour_gui_h__ */
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index c30627fdec..002b7dd3ed 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -647,11 +647,10 @@ ARDOUR_UI::save_ardour_state ()
window_node->add_child_nocopy (*tearoff_node);
Config->add_extra_xml (*window_node);
+ Config->add_extra_xml (_audio_midi_setup->get_state());
- if (_startup && _startup->engine_control() && _startup->engine_control()->was_used()) {
- Config->add_extra_xml (_startup->engine_control()->get_state());
- }
Config->save_state();
+
if (ui_config->dirty()) {
ui_config->save_state ();
}
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index c50198a960..7a543306e6 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -68,7 +68,6 @@ EngineControl::EngineControl ()
#else
, basic_packer (9, 2)
#endif
- , _used (false)
{
using namespace Notebook_Helpers;
Label* label;
@@ -471,31 +470,28 @@ EngineControl::get_state ()
XMLNode* root = new XMLNode ("AudioMIDISetup");
std::string path;
- if (_used) {
-
- if (!states.empty()) {
- XMLNode* state_nodes = new XMLNode ("EngineStates");
+ if (!states.empty()) {
+ XMLNode* state_nodes = new XMLNode ("EngineStates");
+
+ for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) {
- for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) {
-
- XMLNode* node = new XMLNode ("State");
-
- node->add_property ("backend", (*i).backend);
- node->add_property ("driver", (*i).driver);
- node->add_property ("device", (*i).device);
- node->add_property ("sample-rate", (*i).sample_rate);
- node->add_property ("buffer-size", (*i).buffer_size);
- node->add_property ("input-latency", (*i).input_latency);
- node->add_property ("output-latency", (*i).output_latency);
- node->add_property ("input-channels", (*i).input_channels);
- node->add_property ("output-channels", (*i).output_channels);
- node->add_property ("active", (*i).active ? "yes" : "no");
-
- state_nodes->add_child_nocopy (*node);
- }
-
- root->add_child_nocopy (*state_nodes);
+ XMLNode* node = new XMLNode ("State");
+
+ node->add_property ("backend", (*i).backend);
+ node->add_property ("driver", (*i).driver);
+ node->add_property ("device", (*i).device);
+ node->add_property ("sample-rate", (*i).sample_rate);
+ node->add_property ("buffer-size", (*i).buffer_size);
+ node->add_property ("input-latency", (*i).input_latency);
+ node->add_property ("output-latency", (*i).output_latency);
+ node->add_property ("input-channels", (*i).input_channels);
+ node->add_property ("output-channels", (*i).output_channels);
+ node->add_property ("active", (*i).active ? "yes" : "no");
+
+ state_nodes->add_child_nocopy (*node);
}
+
+ root->add_child_nocopy (*state_nodes);
}
return *root;
@@ -518,6 +514,7 @@ EngineControl::set_state (const XMLNode& root)
states.clear ();
+
for (citer = clist.begin(); citer != clist.end(); ++citer) {
child = *citer;
@@ -653,13 +650,6 @@ EngineControl::setup_engine (bool start)
return -1;
}
- /* we've used this dialog to configure the engine, which means
- * that our state becomes relevant for saving (and thus
- * implicitly, restoring.
- */
-
- _used = true;
-
/* get a pointer to the current state object, creating one if
* necessary
*/
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index 3ee7a388bc..7c9c652f57 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -41,7 +41,6 @@ class EngineControl : public Gtk::VBox {
static bool need_setup ();
int setup_engine (bool start);
- bool was_used() const { return _used; }
XMLNode& get_state ();
void set_state (const XMLNode&);
@@ -96,8 +95,6 @@ class EngineControl : public Gtk::VBox {
sigc::connection sr_connection;
sigc::connection bs_connection;
- bool _used;
-
static bool engine_running ();
void driver_changed ();
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index 2e6fe49e98..d776e3c36f 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -314,7 +314,7 @@ ArdourStartup::session_folder ()
void
ArdourStartup::setup_audio_page ()
{
- engine_dialog = manage (new EngineControl);
+ engine_dialog = ARDOUR_UI::instance()->audio_midi_setup_widget ();
engine_dialog->set_border_width (12);
diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h
index 4af6ffbc2a..5a95994c4e 100644
--- a/gtk2_ardour/startup.h
+++ b/gtk2_ardour/startup.h
@@ -56,8 +56,6 @@ class ArdourStartup : public Gtk::Assistant {
bool use_session_template();
std::string session_template_name();
- EngineControl* engine_control() { return engine_dialog; }
-
// advanced session options
bool create_master_bus() const;