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
ARDOUR_UI::save_ardour_state ()
{
if (!keyboard || !mixer || !editor || !meterbridge) {
return;
}
/* XXX this is all a bit dubious. add_extra_xml() uses
a different lifetime model from add_instant_xml().
*/
XMLNode* node = new XMLNode (keyboard->get_state());
Config->add_extra_xml (*node);
if (keyboard) {
XMLNode* node = new XMLNode (keyboard->get_state());
Config->add_extra_xml (*node);
}
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 ());
@ -996,13 +994,6 @@ ARDOUR_UI::save_ardour_state ()
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 */
XMLNode* cnode = new XMLNode(X_("ClockModes"));
for (auto const& i: AudioClock::clocks) {
@ -1022,14 +1013,54 @@ ARDOUR_UI::save_ardour_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) {
_session->add_instant_xml (main_window_node);
_session->add_instant_xml (enode);
_session->add_instant_xml (mnode);
_session->add_instant_xml (pnode);
_session->add_instant_xml (bnode);
_session->add_instant_xml (rnode);
_session->add_instant_xml (tnode);
if (enode) {
_session->add_instant_xml (*enode);
}
if (mnode) {
_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);
if (location_ui) {
_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 */
{
Config->add_instant_xml (main_window_node);
Config->add_instant_xml (enode);
Config->add_instant_xml (mnode);
Config->add_instant_xml (pnode);
Config->add_instant_xml (bnode);
Config->add_instant_xml (rnode);
Config->add_instant_xml (tnode);
Config->add_instant_xml (*cnode);
if (enode) {
Config->add_instant_xml (*enode);
}
if (mnode) {
Config->add_instant_xml (*mnode);
}
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) {
Config->add_instant_xml (location_ui->ui().get_state ());
}
@ -1061,13 +1105,12 @@ ARDOUR_UI::save_ardour_state ()
}
}
delete &enode;
delete &mnode;
delete &bnode;
delete &pnode;
delete &rnode;
delete &tnode;
delete cnode;
delete enode;
delete mnode;
delete bnode;
delete pnode;
delete rnode;
delete tnode;
Keyboard::save_keybindings ();
}