diff options
Diffstat (limited to 'src/server/ingen_jack.cpp')
-rw-r--r-- | src/server/ingen_jack.cpp | 42 |
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" |