summaryrefslogtreecommitdiff
path: root/libs/ardour/worker.cc
AgeCommit message (Collapse)Author
2017-09-16Namespace PBD::RingBufferRobin Gareus
class RingBuffer<> is a very generic name and should not pollute the global namespace.
2017-05-07Semaphores need to have a unique name -- fixes #7341Robin Gareus
On Windows (and OSX) semaphores are named. If the name matches an existing semaphore, it is re-used and not re-initialized. In case of multiple LV2-plugins each with a worker-thread this can lead to a deadlock.
2017-01-20Plug some libardour memory leaksRobin Gareus
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.
2016-07-31Fix possible ringbuffer overflowDavid Robillard
2015-12-02consolidate semaphore implementation (part one)Robin Gareus
2014-03-23catch OOMRobin Gareus
2014-03-23fix some memory leaksRobin Gareus
2014-03-23fix edge case (partial write of LV2 worker message size)Robin Gareus
2013-08-04'libs/ardour' - Main body of changes required for building with MSVCJohn Emmas
2012-08-29added missing header includeRobin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13150 d708f5d6-7413-0410-9779-e7cbd77b26cf
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-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