diff options
author | David Robillard <d@drobilla.net> | 2007-03-22 05:39:43 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-03-22 05:39:43 +0000 |
commit | 642f35f5bb17990cf699050cfe777bd903942912 (patch) | |
tree | c2272df916b570f1bb01612ed44e8f5b278a090f /src/engine | |
parent | fdbf857218f79a231ec49f249aa51d2d5336d071 (diff) | |
download | machina-642f35f5bb17990cf699050cfe777bd903942912.tar.gz machina-642f35f5bb17990cf699050cfe777bd903942912.tar.bz2 machina-642f35f5bb17990cf699050cfe777bd903942912.zip |
Fix crash on importing MIDI multiple times.
git-svn-id: http://svn.drobilla.net/lad/machina@371 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/Engine.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 2b4088e..5da3289 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -51,10 +51,15 @@ Engine::load_machine(const Glib::ustring& uri) SharedPtr<Machine> Engine::learn_midi(const Glib::ustring& uri) { + SharedPtr<Machine> old_machine = _driver->machine(); // Hold a reference to current machine.. + SharedPtr<SMFDriver> file_driver(new SMFDriver()); - SharedPtr<Machine> m = file_driver->learn(uri, 32.0); + SharedPtr<Machine> m = file_driver->learn(uri, 32.0); // FIXME: hardcoded m->activate(); _driver->set_machine(m); + + // .. and drop it in this thread (to prevent deallocation in the RT thread) + return m; } |