summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/worker.h
AgeCommit message (Collapse)Author
2017-09-16Namespace PBD::RingBufferRobin Gareus
class RingBuffer<> is a very generic name and should not pollute the global namespace.
2016-07-31Support thread-safe LV2 state restorationDavid Robillard
The original LV2 state extension required that run() is suspended during restore(). Ardour violates this rule, which can lead to crashes and other issues. The state extension has been updated to allow restoring state in a thread-safe way by using the worker to enqueue state changes. This commit supports that new specification, i.e. supports dropout-free state restoration properly. However, the bug with old plugins that do not use this facility is still not fixed.
2015-12-02rename ProcessSemaphore to Semaphore (libs)Robin Gareus
2015-12-02consolidate semaphore implementation (part one)Robin Gareus
2013-10-17add export visibility macros across libardourPaul Davis
2012-08-28LV2 worker: prevent corruption of ringbufferRobin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13146 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-27fix LV2 workerRobin Gareus
start worker thread after _sem and _exit have been initialized. stop thread when plugin is removed. git-svn-id: svn://localhost/ardour2/branches/3.0@13145 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25convert from Glib:: to Glib::Threads for all thread-related APIPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-10Forward port LV2 BPM and freewheeling port stuff from 2.0-ongoing.David Robillard
Fix worker implementation to preserve error codes. git-svn-id: svn://localhost/ardour2/branches/3.0@11877 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-05Implement LV2 worker extension.David Robillard
This is done by way of a generic Worker object/thread, which currently just applies to one LV2 plugin, but the idea is to share one thread and set of buffers among many plugins. The same pattern may also be useful elsewhere in Ardour. The responding part gets a bit tricker when sharing a worker between plugins, it's not a blocker, and I'm lazy, sooo here's this. This commit also adds a new portable in-process semaphore to PBD. The existing one is pretty weird and uses a named semaphore on OSX for reasons unknown to me. Perhaps as a quick fix to avoid POSIX semaphores being utterly broken on OSX? It would probably be a good idea to replace that with this new one, which uses Mach kernel semaphores on OSX which work well, though I am not sure how pedantically real-time safe they are to signal. git-svn-id: svn://localhost/ardour2/branches/3.0@11790 d708f5d6-7413-0410-9779-e7cbd77b26cf