From cda796269b903899edcbc479dbdc3c7dacb944c5 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 22 Nov 2008 08:00:59 +0000 Subject: Finer grained locking on RDF world lock when parsing: prevents deadlock on loading massive patches that fill the event queue. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1765 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/QueuedEventSource.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/engine') diff --git a/src/engine/QueuedEventSource.cpp b/src/engine/QueuedEventSource.cpp index 69ab805a..e9817c4b 100644 --- a/src/engine/QueuedEventSource.cpp +++ b/src/engine/QueuedEventSource.cpp @@ -114,13 +114,9 @@ QueuedEventSource::process(PostProcessor& dest, ProcessContext& context) ++num_events_processed; } - if (_full_semaphore.has_waiter() && num_events_processed > 0) - _full_semaphore.post(); - - /*if (num_events_processed > 0) - dest.whip();*/ - //else - // cerr << "NO PROC: queued: " << unprepared_events() << ", stamped: " << !_stamped_queue.empty() << endl; + if (num_events_processed > 0) + while (_full_semaphore.has_waiter()) + _full_semaphore.post(); } -- cgit v1.2.1