diff options
author | Robin Gareus <robin@gareus.org> | 2018-11-12 02:30:46 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2018-11-12 02:30:46 +0100 |
commit | 848187b264bda071253dc48814d26237c06b9d07 (patch) | |
tree | 1ae4227d5c2189bc7668b4b52d464eebf46eebcc /gtk2_ardour/luainstance.cc | |
parent | 9e20a24db0f5697f8dbe647c7d9cf97bcc07e2dd (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.cc | 6 |
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 { |