13
0

get state saving working again

This was being bypassed due to misssing UI components in livetrax
This commit is contained in:
Paul Davis 2024-04-25 17:44:50 -06:00
parent 3767754ec9
commit 55041ecd26

View File

@ -940,16 +940,14 @@ ARDOUR_UI::use_menubar_as_top_menubar ()
void void
ARDOUR_UI::save_ardour_state () ARDOUR_UI::save_ardour_state ()
{ {
if (!keyboard || !mixer || !editor || !meterbridge) {
return;
}
/* XXX this is all a bit dubious. add_extra_xml() uses /* XXX this is all a bit dubious. add_extra_xml() uses
a different lifetime model from add_instant_xml(). a different lifetime model from add_instant_xml().
*/ */
XMLNode* node = new XMLNode (keyboard->get_state()); if (keyboard) {
Config->add_extra_xml (*node); XMLNode* node = new XMLNode (keyboard->get_state());
Config->add_extra_xml (*node);
}
XMLNode* window_node = new XMLNode (X_("UI")); XMLNode* window_node = new XMLNode (X_("UI"));
window_node->set_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ()); window_node->set_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ());
@ -996,13 +994,6 @@ ARDOUR_UI::save_ardour_state ()
window_node->add_child_nocopy (*tearoff_node); window_node->add_child_nocopy (*tearoff_node);
XMLNode& enode (editor->get_state());
XMLNode& mnode (mixer->get_state());
XMLNode& bnode (meterbridge->get_state());
XMLNode& pnode (rc_option_editor->get_state());
XMLNode& rnode (recorder->get_state());
XMLNode& tnode (trigger_page->get_state());
/* store clock modes */ /* store clock modes */
XMLNode* cnode = new XMLNode(X_("ClockModes")); XMLNode* cnode = new XMLNode(X_("ClockModes"));
for (auto const& i: AudioClock::clocks) { for (auto const& i: AudioClock::clocks) {
@ -1022,14 +1013,54 @@ ARDOUR_UI::save_ardour_state ()
UIConfiguration::instance().save_state (); UIConfiguration::instance().save_state ();
XMLNode* enode (nullptr);
XMLNode* mnode (nullptr);
XMLNode* bnode (nullptr);
XMLNode* pnode (nullptr);
XMLNode* rnode (nullptr);
XMLNode* tnode (nullptr);
if (editor) {
enode = &editor->get_state();
}
if (mixer) {
mnode = &mixer->get_state();
}
if (meterbridge) {
bnode = &meterbridge->get_state();
}
if (rc_option_editor) {
pnode = &rc_option_editor->get_state();
}
if (recorder) {
rnode = &recorder->get_state();
}
if (trigger_page) {
tnode = &trigger_page->get_state();
}
if (_session) { if (_session) {
_session->add_instant_xml (main_window_node); _session->add_instant_xml (main_window_node);
_session->add_instant_xml (enode);
_session->add_instant_xml (mnode); if (enode) {
_session->add_instant_xml (pnode); _session->add_instant_xml (*enode);
_session->add_instant_xml (bnode); }
_session->add_instant_xml (rnode); if (mnode) {
_session->add_instant_xml (tnode); _session->add_instant_xml (*mnode);
}
if (bnode) {
_session->add_instant_xml (*bnode);
}
if (pnode) {
_session->add_instant_xml (*pnode);
}
if (rnode) {
_session->add_instant_xml (*rnode);
}
if (tnode) {
_session->add_instant_xml (*tnode);
}
_session->add_instant_xml (*cnode); _session->add_instant_xml (*cnode);
if (location_ui) { if (location_ui) {
_session->add_instant_xml (location_ui->ui().get_state ()); _session->add_instant_xml (location_ui->ui().get_state ());
@ -1044,13 +1075,26 @@ ARDOUR_UI::save_ardour_state ()
/* save current Window settings and sizes for new sessions */ /* save current Window settings and sizes for new sessions */
{ {
Config->add_instant_xml (main_window_node); Config->add_instant_xml (main_window_node);
Config->add_instant_xml (enode);
Config->add_instant_xml (mnode); if (enode) {
Config->add_instant_xml (pnode); Config->add_instant_xml (*enode);
Config->add_instant_xml (bnode); }
Config->add_instant_xml (rnode); if (mnode) {
Config->add_instant_xml (tnode); Config->add_instant_xml (*mnode);
Config->add_instant_xml (*cnode); }
if (bnode) {
Config->add_instant_xml (*bnode);
}
if (pnode) {
Config->add_instant_xml (*pnode);
}
if (rnode) {
Config->add_instant_xml (*rnode);
}
if (tnode) {
Config->add_instant_xml (*tnode);
}
if (location_ui) { if (location_ui) {
Config->add_instant_xml (location_ui->ui().get_state ()); Config->add_instant_xml (location_ui->ui().get_state ());
} }
@ -1061,13 +1105,12 @@ ARDOUR_UI::save_ardour_state ()
} }
} }
delete &enode; delete enode;
delete &mnode; delete mnode;
delete &bnode; delete bnode;
delete &pnode; delete pnode;
delete &rnode; delete rnode;
delete &tnode; delete tnode;
delete cnode;
Keyboard::save_keybindings (); Keyboard::save_keybindings ();
} }