From 2f71967be2c8d159efd0c8e52dbfd22da2c8976e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 5 Jul 2016 23:49:50 +0200 Subject: [PATCH] fix crash when loading a saved visual state --- gtk2_ardour/editor.cc | 4 ++-- gtk2_ardour/gui_object.h | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 4ce3ac55b8..146a4e7e44 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -4383,7 +4383,7 @@ Editor::current_visual_state (bool with_tracks) vs->zoom_focus = zoom_focus; if (with_tracks) { - *vs->gui_state = *ARDOUR_UI::instance()->gui_object_state; + vs->gui_state->set_state (ARDOUR_UI::instance()->gui_object_state->get_state()); } return vs; @@ -4448,7 +4448,7 @@ Editor::use_visual_state (VisualState& vs) reposition_and_zoom (vs.leftmost_frame, vs.samples_per_pixel); if (vs.gui_state) { - *ARDOUR_UI::instance()->gui_object_state = *vs.gui_state; + ARDOUR_UI::instance()->gui_object_state->set_state (vs.gui_state->get_state()); for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { (*i)->clear_property_cache(); diff --git a/gtk2_ardour/gui_object.h b/gtk2_ardour/gui_object.h index 16b43f31e3..62eeaa9a33 100644 --- a/gtk2_ardour/gui_object.h +++ b/gtk2_ardour/gui_object.h @@ -66,6 +66,9 @@ public: static XMLNode* get_or_add_node (XMLNode *, const std::string &); private: + // no copy construction. object_map saves pointers to _state XMLNodes + // use set_state(get_state()) + GUIObjectState (const GUIObjectState& other); XMLNode _state; // ideally we'd use a O(1) hash table here,