aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/Engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/Engine.cpp')
-rw-r--r--src/engine/Engine.cpp23
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)