Commit Graph

21 Commits

Author SHA1 Message Date
Robin Gareus 24bbf403b9
Replace Glib::Threads with PBD::Thread (1/2) 2022-03-01 01:33:49 +01:00
Robin Gareus 9908419f89
Use byte-offset when reading size at ringbuffer boundary
This likely fixes https://github.com/sfztools/sfizz/issues/221
2020-05-12 19:30:15 +02:00
Robin Gareus c365c6cdb2
Set thread-names (libs) 2020-03-29 14:56:22 +02:00
Robin Gareus 2d4eb7d505
Replace OOM segfault with abort :) 2019-08-20 05:07:16 +02:00
Robin Gareus a22f918d9d
Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus 145d7f8d0a
LV2: Immediately respond after processing scheduled work in sync exec mode
This allows for sample-accuracy when the work is triggered by sequenced
events in offline rendering mode.
2019-01-22 21:54:22 +01:00
Robin Gareus 7258c6334d Namespace PBD::RingBuffer
class RingBuffer<> is a very generic name and should not pollute the
global namespace.
2017-09-16 16:37:29 +02:00
Robin Gareus 6bcd543bf2 Semaphores need to have a unique name -- fixes #7341
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-05-07 02:02:30 +02:00
Robin Gareus 02d484de8a Plug some libardour memory leaks 2017-01-20 11:32:55 +01:00
David Robillard 7c23026515 Support thread-safe LV2 state restoration
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-31 21:59:21 -04:00
David Robillard 4805747260 Fix possible ringbuffer overflow 2016-07-31 20:06:51 -04:00
Robin Gareus 003b632ed1 consolidate semaphore implementation (part one) 2015-12-02 16:03:28 +01:00
Robin Gareus dbcf22a832 catch OOM 2014-03-23 02:18:49 +01:00
Robin Gareus 89e63b4bce fix some memory leaks 2014-03-23 00:46:12 +01:00
Robin Gareus 679d48ee2b fix edge case (partial write of LV2 worker message size) 2014-03-23 00:04:46 +01:00
John Emmas 490311bc08 'libs/ardour' - Main body of changes required for building with MSVC 2013-08-04 15:36:07 +01:00
Robin Gareus fd37871315 added missing header include
git-svn-id: svn://localhost/ardour2/branches/3.0@13150 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-29 00:30:50 +00:00
Robin Gareus 9ab45f37c6 LV2 worker: prevent corruption of ringbuffer
git-svn-id: svn://localhost/ardour2/branches/3.0@13146 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-28 15:42:35 +00:00
Robin Gareus a8f0c3255f fix LV2 worker
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-08-27 04:08:48 +00:00
Paul Davis 3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
David Robillard 338e83d9dc Implement LV2 worker extension.
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
2012-04-05 00:15:54 +00:00