summaryrefslogtreecommitdiffstats
path: root/src/server/ingen_jack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ingen_jack.cpp')
-rw-r--r--src/server/ingen_jack.cpp42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/server/ingen_jack.cpp b/src/server/ingen_jack.cpp
index 37aa9c7b..16369d0c 100644
--- a/src/server/ingen_jack.cpp
+++ b/src/server/ingen_jack.cpp
@@ -14,44 +14,52 @@
along with Ingen. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "JackDriver.hpp"
#include "Engine.hpp"
+#include "JackDriver.hpp"
-#include "ingen/Atom.hpp"
-#include "ingen/Configuration.hpp"
-#include "ingen/Log.hpp"
-#include "ingen/Module.hpp"
-#include "ingen/World.hpp"
+#include <ingen/Atom.hpp>
+#include <ingen/Configuration.hpp>
+#include <ingen/Log.hpp>
+#include <ingen/Module.hpp>
+#include <ingen/World.hpp>
+#include <memory>
#include <string>
-using namespace ingen;
+namespace ingen::server {
+
+class Driver;
+
+struct JackModule : public Module {
+ void load(World& world) override {
+ server::Engine* const engine =
+ static_cast<server::Engine*>(world.engine().get());
-struct IngenJackModule : public ingen::Module {
- void load(ingen::World& world) override {
- if (((server::Engine*)world.engine().get())->driver()) {
+ if (engine->driver()) {
world.log().warn("Engine already has a driver\n");
return;
}
- server::JackDriver* driver = new server::JackDriver(
- *(server::Engine*)world.engine().get());
- const Atom& s = world.conf().option("jack-server");
+ auto* driver = new server::JackDriver(*engine);
+ const Atom& s = world.conf().option("jack-server");
const std::string server_name = s.is_valid() ? s.ptr<char>() : "";
+
driver->attach(server_name,
world.conf().option("jack-name").ptr<char>(),
nullptr);
- ((server::Engine*)world.engine().get())->set_driver(
- SPtr<server::Driver>(driver));
+
+ engine->set_driver(std::shared_ptr<server::Driver>(driver));
}
};
+} // namespace ingen::server
+
extern "C" {
-ingen::Module*
+INGEN_MODULE_EXPORT ingen::Module*
ingen_module_load()
{
- return new IngenJackModule();
+ return new ingen::server::JackModule();
}
} // extern "C"