aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-03-22 05:39:43 +0000
committerDavid Robillard <d@drobilla.net>2007-03-22 05:39:43 +0000
commit642f35f5bb17990cf699050cfe777bd903942912 (patch)
treec2272df916b570f1bb01612ed44e8f5b278a090f
parentfdbf857218f79a231ec49f249aa51d2d5336d071 (diff)
downloadmachina-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
-rw-r--r--src/engine/Engine.cpp7
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;
}