summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-05 23:49:50 +0200
committerRobin Gareus <robin@gareus.org>2016-07-05 23:49:50 +0200
commit2f71967be2c8d159efd0c8e52dbfd22da2c8976e (patch)
tree5c1e81c561f627ccffe54f4a9d7ffd665e3b6a18 /gtk2_ardour
parent412fcafda0afdb161368fcf05870770aeff79525 (diff)
fix crash when loading a saved visual state
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc4
-rw-r--r--gtk2_ardour/gui_object.h3
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,