Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
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.
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5722 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5663 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5653 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5346 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5260 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5047 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5044 a436a847-0d15-0410-975c-d299462d15a1
|
|
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
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4916 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4740 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4731 a436a847-0d15-0410-975c-d299462d15a1
|
|
twiddling).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4730 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4709 a436a847-0d15-0410-975c-d299462d15a1
|
|
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
|
|
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
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4411 a436a847-0d15-0410-975c-d299462d15a1
|
|
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
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4402 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4376 a436a847-0d15-0410-975c-d299462d15a1
|
|
assertions.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4374 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4372 a436a847-0d15-0410-975c-d299462d15a1
|
|
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4371 a436a847-0d15-0410-975c-d299462d15a1
|
|
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
|