From aab0d5e9bfd13dea685614d03f420273678f8f60 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 4 Jan 2014 19:06:36 +0000 Subject: More attempts at fixing deadlocks on exit. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5260 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/Engine.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/server/Engine.cpp') diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index 922935c9..4c258d54 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -100,9 +100,10 @@ Engine::~Engine() // Process all pending events const FrameTime end = std::numeric_limits::max(); _process_context.locate(_process_context.end(), end - _process_context.end()); + _post_processor->set_end_time(end); + _post_processor->process(); while (!_pre_processor->empty()) { - _post_processor->set_end_time(end); - _pre_processor->process(_process_context, *_post_processor, false); + _pre_processor->process(_process_context, *_post_processor, 1); _post_processor->process(); } @@ -356,15 +357,15 @@ Engine::pending_events() void Engine::enqueue_event(Event* ev) { - if (!_quit_flag) { - _pre_processor->event(ev); - } + _pre_processor->event(ev); } unsigned Engine::process_events() { - return _pre_processor->process(_process_context, *_post_processor); + const size_t MAX_EVENTS_PER_CYCLE = 4;//_process_context.nframes() / 4; + return _pre_processor->process( + _process_context, *_post_processor, MAX_EVENTS_PER_CYCLE); } void -- cgit v1.2.1