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.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp
index b883c2e..30f5b68 100644
--- a/src/engine/Engine.cpp
+++ b/src/engine/Engine.cpp
@@ -16,14 +16,34 @@
*/
#include <glibmm/ustring.h>
+
+#include "machina-config.h"
#include "machina/Engine.hpp"
-#include "machina/JackDriver.hpp"
#include "machina/Loader.hpp"
#include "machina/Machine.hpp"
#include "machina/SMFDriver.hpp"
+#ifdef HAVE_JACK
+#include "JackDriver.hpp"
+#endif
namespace Machina {
+SharedPtr<Driver>
+Engine::new_driver(const std::string& name, SharedPtr<Machine> machine)
+{
+ #ifdef HAVE_JACK
+ if (name == "jack") {
+ JackDriver* driver = new JackDriver(machine);
+ driver->attach("machina");
+ return SharedPtr<Driver>(driver);
+ }
+ #endif
+ if (name == "smf")
+ return SharedPtr<Driver>(new SMFDriver(machine));
+
+ std::cerr << "Error: Unknown driver type `" << name << "'" << std::endl;
+ return SharedPtr<Driver>();
+}
/** Load the machine at @a uri, and run it (replacing current machine).
* Safe to call while engine is processing.