summaryrefslogtreecommitdiffstats
path: root/src/server/PreProcessor.cpp
AgeCommit message (Collapse)AuthorFilesLines
2017-02-12Fix warning during optimized buildDavid Robillard1-1/+1
2017-02-12Fix atomic event executionDavid Robillard1-24/+28
2017-01-18Fix invalid cross-thread use of mutexDavid Robillard1-1/+17
Instead of abusing store mutex for this purpose, extend blocking mechanism of the PreProcessor (designed for atomic bundle execution) to support execution of individual atomic events which must be executed before the next event can be pre-processed.
2016-12-13Fix some real-time safety issuesDavid Robillard1-0/+2
2016-10-14Fix occasionally stuck event queueDavid Robillard1-8/+13
2016-10-02Implement microsecond clock for Linux and OSXDavid Robillard1-2/+2
2016-10-02Defer graph compilation in atomic bundlesDavid Robillard1-1/+13
This avoids situations like compiling a graph hundreds of times when it is loaded because it has hundreds of nodes and each event triggers a re-compile. This speeds things up dramatically, but exacerbates the theoretical problem of there not being enough time in a cycle to execute a bundle. As far as I can tell, the execute phase of events is very fast, so hundreds or thousands can easily run in a tiny fraction of the process cycle, but this still needs resolution to be truly hard real-time. What probably needs to happen is that all context and state used to process is moved to CompiledGraph and nodes do not access their own fields at all, but have some references into the CompiledGraph. This way, a compiled graph is separate from its "source code", and an old one could continue to be run while a new one is beng applied across several cycles.
2016-10-01Fix OSX buildDavid Robillard1-1/+1
2016-09-29Atomic bundle executionDavid Robillard1-5/+49
2016-09-11Remove last vestiges of multiple run contextsDavid Robillard1-2/+2
2016-07-30Add undo supportDavid Robillard1-5/+35
2016-07-30Fix stall by making PreProcessor tick periodicallyDavid Robillard1-1/+5
I am not sure exactly what scenarios cause this to happen, every event should post to the semaphore, but having the PreProcessor thread tick idly doesn't hurt anything and resolves the issue.
2015-09-11Remove debug printing stuff.David Robillard1-1/+0
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5722 a436a847-0d15-0410-975c-d299462d15a1
2015-04-05Remove dead code.David Robillard1-8/+4
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5663 a436a847-0d15-0410-975c-d299462d15a1
2015-04-04Update copyright dates.David Robillard1-1/+1
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5653 a436a847-0d15-0410-975c-d299462d15a1
2014-03-30Hopefully fix dead lock issues with locked events.David Robillard1-3/+5
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5346 a436a847-0d15-0410-975c-d299462d15a1
2014-01-04More attempts at fixing deadlocks on exit.David Robillard1-10/+7
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5260 a436a847-0d15-0410-975c-d299462d15a1
2013-02-04Replace Raul::thread with std::thread.David Robillard1-7/+10
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5047 a436a847-0d15-0410-975c-d299462d15a1
2013-02-03Fix potential deadlock on exit.David Robillard1-1/+4
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5044 a436a847-0d15-0410-975c-d299462d15a1
2013-01-11Initialise atomics.David Robillard1-0/+3
Unlike the old Raul classes, std::atomic<T*> does not automatically initialise to NULL. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4917 a436a847-0d15-0410-975c-d299462d15a1
2013-01-11Use C++11 atomics.David Robillard1-5/+5
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4916 a436a847-0d15-0410-975c-d299462d15a1
2012-08-22Fix event list bugs. Maybe.David Robillard1-25/+21
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4740 a436a847-0d15-0410-975c-d299462d15a1
2012-08-20Replace several assertions with graceful error handling.David Robillard1-2/+2
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4731 a436a847-0d15-0410-975c-d299462d15a1
2012-08-20Fix crash (bad assertion) on high event rates (notably fast GUI parameter ↵David Robillard1-3/+5
twiddling). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4730 a436a847-0d15-0410-975c-d299462d15a1
2012-08-16Remove verbose logging stuff from Thread.David Robillard1-1/+1
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4709 a436a847-0d15-0410-975c-d299462d15a1
2012-08-16Remove Raul::Slave class.David Robillard1-11/+14
Merge Thread::stop() and Thread::join(). Clean thread shut down without the use of pthread_cancel(). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4708 a436a847-0d15-0410-975c-d299462d15a1
2012-05-22More work on test suite.David Robillard1-0/+4
Clean up, simplify, and shrink event code. Support disconnect_all via Atom protocol. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4432 a436a847-0d15-0410-975c-d299462d15a1
2012-05-14Clean up Thread interface.David Robillard1-1/+1
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4411 a436a847-0d15-0410-975c-d299462d15a1
2012-05-14Remove Thread context stuff and add a thread-specific variable class, ↵David Robillard1-1/+2
ThreadVar, which can be used for this and many other things. ClientBroadcaster => Broadcaster. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4405 a436a847-0d15-0410-975c-d299462d15a1
2012-05-14Real-time safe LV2 message handling.David Robillard1-3/+3
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4402 a436a847-0d15-0410-975c-d299462d15a1
2012-05-12More work towards checking contexts via parameter rather than thread magic.David Robillard1-2/+0
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4376 a436a847-0d15-0410-975c-d299462d15a1
2012-05-12Use compiler checkable ProcessContext parameter rather than runtime context ↵David Robillard1-1/+1
assertions. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4374 a436a847-0d15-0410-975c-d299462d15a1
2012-05-12Remove redundant thread assertions.David Robillard1-3/+1
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4372 a436a847-0d15-0410-975c-d299462d15a1
2012-05-12Add thread assertion.David Robillard1-0/+2
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4371 a436a847-0d15-0410-975c-d299462d15a1
2012-05-09Simply event interface design and make only one pre-process thread.David Robillard1-0/+125
This makes event pre-processing actually safe for multiple interfaces since multiple events will never be pre-processed simultaneously and the pre-process order is definitely the same as the execute order. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4323 a436a847-0d15-0410-975c-d299462d15a1