summaryrefslogtreecommitdiffstats
path: root/src/server/Engine.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-05-03 05:43:19 +0000
committerDavid Robillard <d@drobilla.net>2012-05-03 05:43:19 +0000
commit02dcc06a1675e936ef85714827accb20a9f2a94c (patch)
treee1980d770736b64b6652c4afed6f2a7bb3ba3858 /src/server/Engine.cpp
parent9ae720fdc60d7e40b1b8be7c1133a57acb4e564c (diff)
downloadingen-02dcc06a1675e936ef85714827accb20a9f2a94c.tar.gz
ingen-02dcc06a1675e936ef85714827accb20a9f2a94c.tar.bz2
ingen-02dcc06a1675e936ef85714827accb20a9f2a94c.zip
Work towards a proper server infrastructure with a thread per connection.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4320 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r--src/server/Engine.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp
index f793ad22..77630d54 100644
--- a/src/server/Engine.cpp
+++ b/src/server/Engine.cpp
@@ -237,8 +237,15 @@ Engine::process_events(ProcessContext& context)
{
ThreadManager::assert_thread(THREAD_PROCESS);
- for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i)
- (*i)->process(*_post_processor, context);
+ EventSources::iterator i = _event_sources.begin();
+ while (i != _event_sources.end()) {
+ EventSources::iterator next = i;
+ ++next;
+ if (!(*i)->process(*_post_processor, context)) {
+ _event_sources.erase(i);
+ }
+ i = next;
+ }
}
void