diff options
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r-- | src/server/Engine.cpp | 63 |
1 files changed, 25 insertions, 38 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index 628d0b50..e8d4770e 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -66,23 +66,23 @@ bool ThreadManager::single_threaded(true); Engine::Engine(Ingen::World* world) : _world(world) + , _options(new LV2Options(world->uris())) + , _buffer_factory(new BufferFactory(*this, world->uris())) , _maid(new Raul::Maid) - , _block_factory(new BlockFactory(world)) + , _worker(new Worker(world->log(), event_queue_size())) + , _sync_worker(new Worker(world->log(), event_queue_size(), true)) , _broadcaster(new Broadcaster()) - , _buffer_factory(new BufferFactory(*this, world->uris())) - , _control_bindings(nullptr) - , _event_writer(new EventWriter(*this)) - , _interface(_event_writer) - , _atom_interface(nullptr) - , _options(new LV2Options(world->uris())) + , _control_bindings(new ControlBindings(*this)) + , _block_factory(new BlockFactory(world)) , _undo_stack(new UndoStack(_world->uris(), _world->uri_map())) , _redo_stack(new UndoStack(_world->uris(), _world->uri_map())) - , _pre_processor(new PreProcessor(*this)) , _post_processor(new PostProcessor(*this)) + , _pre_processor(new PreProcessor(*this)) + , _event_writer(new EventWriter(*this)) + , _interface(_event_writer) + , _atom_interface( + new AtomReader(world->uri_map(), world->uris(), world->log(), *_interface)) , _root_graph(nullptr) - , _worker(new Worker(world->log(), event_queue_size())) - , _sync_worker(new Worker(world->log(), event_queue_size(), true)) - , _listener(nullptr) , _cycle_start_time(0) , _rand_engine(0) , _uniform_dist(0.0f, 1.0f) @@ -95,8 +95,6 @@ Engine::Engine(Ingen::World* world) world->set_store(SPtr<Ingen::Store>(new Store())); } - _control_bindings = new ControlBindings(*this); - for (int i = 0; i < world->conf().option("threads").get<int32_t>(); ++i) { Raul::RingBuffer* ring = new Raul::RingBuffer(24 * event_queue_size()); _notifications.push_back(ring); @@ -128,9 +126,6 @@ Engine::Engine(Ingen::World* world) stderr, ColorContext::Color::MAGENTA)}); } - - _atom_interface = new AtomReader( - world->uri_map(), world->uris(), world->log(), *_interface.get()); } Engine::~Engine() @@ -149,7 +144,7 @@ Engine::~Engine() _post_processor->process(); } - delete _atom_interface; + _atom_interface.reset(); // Delete run contexts _quit_flag = true; @@ -173,33 +168,13 @@ Engine::~Engine() } _world->set_store(SPtr<Ingen::Store>()); - -#ifdef HAVE_SOCKET - delete _listener; -#endif - delete _pre_processor; - delete _post_processor; - delete _undo_stack; - delete _redo_stack; - delete _block_factory; - delete _control_bindings; - delete _broadcaster; - delete _sync_worker; - delete _worker; - delete _maid; - - _driver.reset(); - - delete _buffer_factory; - - munlockall(); } void Engine::listen() { #ifdef HAVE_SOCKET - _listener = new SocketListener(*this); + _listener = UPtr<SocketListener>(new SocketListener(*this)); #endif } @@ -220,6 +195,12 @@ Engine::locate(FrameTime s, SampleCount nframes) } void +Engine::set_root_graph(GraphImpl* graph) +{ + _root_graph = graph; +} + +void Engine::flush_events(const std::chrono::milliseconds& sleep_ms) { bool finished = !pending_events(); @@ -521,6 +502,12 @@ Engine::process_all_events() return _pre_processor->process(run_context(), *_post_processor, 0); } +Log& +Engine::log() const +{ + return _world->log(); +} + void Engine::register_client(SPtr<Interface> client) { |