summaryrefslogtreecommitdiff
path: root/gtk2_ardour/luainstance.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-11-12 02:30:46 +0100
committerRobin Gareus <robin@gareus.org>2018-11-12 02:30:46 +0100
commit848187b264bda071253dc48814d26237c06b9d07 (patch)
tree1ae4227d5c2189bc7668b4b52d464eebf46eebcc /gtk2_ardour/luainstance.cc
parent9e20a24db0f5697f8dbe647c7d9cf97bcc07e2dd (diff)
Fix load/save Lua Editor scripts
* callbacks are unregistered during session-deletion, skip saving them during session destruction. * prevent duplicate state restore, re-load script with the session, not window instance.
Diffstat (limited to 'gtk2_ardour/luainstance.cc')
-rw-r--r--gtk2_ardour/luainstance.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc
index 3a7285db6c..4303794bfe 100644
--- a/gtk2_ardour/luainstance.cc
+++ b/gtk2_ardour/luainstance.cc
@@ -1095,8 +1095,6 @@ LuaInstance::LuaInstance ()
{
lua.Print.connect (&_lua_print);
init ();
-
- load_state ();
}
LuaInstance::~LuaInstance ()
@@ -1321,6 +1319,9 @@ LuaInstance::save_state ()
void
LuaInstance::set_dirty ()
{
+ if (!_session || _session->deletion_in_progress()) {
+ return;
+ }
save_state ();
_session->set_dirty (); // XXX is this reasonable?
}
@@ -1393,6 +1394,7 @@ LuaInstance::set_state (const XMLNode& node)
}
}
+ assert (_callbacks.empty());
if ((child = find_named_node (node, "ActionHooks"))) {
for (XMLNodeList::const_iterator n = child->children ().begin (); n != child->children ().end (); ++n) {
try {