diff options
Diffstat (limited to 'src/engine/Engine.cpp')
-rw-r--r-- | src/engine/Engine.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index a53bb81..80eead7 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -28,25 +28,30 @@ namespace Machina { -Engine::Engine(SharedPtr<Driver> driver, Sord::World& rdf_world) +Engine::Engine(Raul::Forge& forge, + SharedPtr<Driver> driver, + Sord::World& rdf_world) : _driver(driver) , _rdf_world(rdf_world) - , _loader(_rdf_world) + , _loader(_forge, _rdf_world) + , _forge(forge) { } SharedPtr<Driver> -Engine::new_driver(const std::string& name, SharedPtr<Machine> machine) +Engine::new_driver(Raul::Forge& forge, + const std::string& name, + SharedPtr<Machine> machine) { #ifdef HAVE_JACK if (name == "jack") { - JackDriver* driver = new JackDriver(machine); + JackDriver* driver = new JackDriver(forge, machine); driver->attach("machina"); return SharedPtr<Driver>(driver); } #endif if (name == "smf") - return SharedPtr<Driver>(new SMFDriver(machine->time().unit())); + return SharedPtr<Driver>(new SMFDriver(forge, machine->time().unit())); std::cerr << "Error: Unknown driver type `" << name << "'" << std::endl; return SharedPtr<Driver>(); @@ -77,7 +82,7 @@ Engine::load_machine(const Glib::ustring& uri) SharedPtr<Machine> Engine::load_machine_midi(const Glib::ustring& uri, double q, Raul::TimeDuration dur) { - SharedPtr<SMFDriver> file_driver(new SMFDriver(dur.unit())); + SharedPtr<SMFDriver> file_driver(new SMFDriver(_forge, dur.unit())); SharedPtr<Machine> machine = file_driver->learn(uri, q, dur); SharedPtr<Machine> old_machine; if (machine) { @@ -95,7 +100,9 @@ void Engine::import_machine(SharedPtr<Machine> machine) { machine->activate(); - _driver->machine()->nodes().append(machine->nodes()); + _driver->machine()->nodes().insert(_driver->machine()->nodes().end(), + machine->nodes().begin(), + machine->nodes().end()); // FIXME: thread safe? // FIXME: announce } @@ -104,7 +111,7 @@ void Engine::export_midi(const Glib::ustring& filename, Raul::TimeDuration dur) { SharedPtr<Machine> machine = _driver->machine(); - SharedPtr<Machina::SMFDriver> file_driver(new Machina::SMFDriver(dur.unit())); + SharedPtr<Machina::SMFDriver> file_driver(new Machina::SMFDriver(_forge, dur.unit())); const bool activated = _driver->is_activated(); if (activated) |