diff options
Diffstat (limited to 'src/engine/Engine.cpp')
-rw-r--r-- | src/engine/Engine.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index fede33f..2b4088e 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -30,11 +30,16 @@ namespace Machina { SharedPtr<Machine> Engine::load_machine(const Glib::ustring& uri) { + SharedPtr<Machine> old_machine = _driver->machine(); // Hold a reference to current machine.. + SharedPtr<Machine> m = Loader().load(uri); if (m) { m->activate(); _driver->set_machine(m); } + + // .. and drop it in this thread (to prevent deallocation in the RT thread) + return m; } |