13
0
Commit Graph

17 Commits

Author SHA1 Message Date
a54a6c40a4
Prepare for API removal
`set_input/output_channels` API to limit a device to the first
`N` chnanels is somewhat ill conveived and was never really
used or useful. LiveTrax has a bitset of exposed channels,
which makes a lot more sense (e.g. hide ADAT or S/Pdif, or
some specific channels)
2024-07-10 15:39:01 +02:00
3e27df9040
Utils: Fix crash at exit due to engine destruction
Ardour::cleanup destroys the TransportMasterManager instance
which unregisters TransportMaster ports. This will crash
if the engine was already destroyed.

See also 7c7bf6c88b
2023-06-15 16:22:23 +02:00
5d023b4c60 libpbd: fix an important thinko for cross-thread signal architecture
The old code assumed that the thread that created a request buffer for a given
signal-emitting thread would be the latter thread, and thus a thread-local
pointer to the request buffer could be used. This turns out not to be true: the
GUI thread tends to be responsible for constructing the request buffers for
pre-registered threads.

That mechanism has been replaced by using a RWLock protected map using
pthread_t as the key and the request buffer as the value. This allows any
thread to create and register the request buffers used between any other pair
of threads (because the lookup always uses a pthread_t).

The symptoms of this problem were a signal emitted in an audioengine thread
that was propagated to the target thread, but when the target thread scans its
request buffers for requests, it finds nothing (because it didn't know about
the request buffer). In a sense, the signal was successfully delivered to the
target thread, but no meaningful work (i.e the signal handler) is performed.
2023-04-21 12:16:37 -06:00
95aa39d1c4
Update call_slot() API, inform caller if slot cannot be queued
It can happen that ::get_request() returns NULL if the
EventPool is full. In that case the slot is never called.

In this case the caller can now take action.
2022-06-09 01:46:27 +02:00
16da5419d3
Do not implicitly modify VST support config parameters 2021-08-10 15:54:37 +02:00
e4e94e77c9
Transmitter::Debug implementation 1/2
This also sorts switch() and listen_to() statements in order
of severity: debug, info, warning, error, fatal, throw.
2020-10-13 21:58:26 +02:00
dbd8d491e5
Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
c60d8cf747 (libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it 2019-01-16 15:29:38 -06:00
476952f2b6 Add session-util to create a new empty session 2017-09-27 18:22:49 +02:00
bc713b00c3 Improve help text and error-reporting for ardour-export 2017-08-06 14:47:50 +02:00
17881b3221 update UI, new info API, display created_version in tooltip 2017-01-20 18:16:32 +01:00
7a1ff7ce8f rework locking (fa07233a, 112fba182)
For now: use a single lock, which should fix all related crashes.
optimize (with less contended partial locks) if this works.
2016-12-14 13:43:20 +01:00
fa07233a17 mutex 'er up
Some overzealous locking to track down RequestObject related crashes.

bc0fa4d689 wrongly locked the current event loop's
request_invalidation_lock instead of the invalidation's list lock.

Also Abstract UI is able to delete requests concurrently with with
EventLoop invalidation.
e.g. PortManager::PortRegisteredOrUnregistered  and GlobalPortMatrixWindow
so the lock needs to be exposed.

If this solves various issues, mutexes should to be consolidated
(request_buffer_map_lock + request_invalidation_lock) and be chosen
such that there is as little contention as possible.
2016-12-13 23:47:07 +01:00
f43ccd7321 update session-utils
* use target name in help text
* add options and documentation to copy-mixer
2016-06-03 23:09:18 +02:00
ea85217437 session-utils tweaks
* emulate 256 i/o (don't loose connections)
* allow "silent" start
2016-06-02 22:25:41 +02:00
53d8b45457 session-utils: use session's sample-rate 2015-12-16 23:22:05 +01:00
b228c11311 commandline session utilities 2015-12-16 00:25:07 +01:00