Commit Graph

82 Commits

Author SHA1 Message Date
Paul Davis 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
Robin Gareus 295dbd8e1e
Make RCU reader return a const pointer (omnibus commit) 2023-04-08 00:15:37 +02:00
Paul Davis b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Mads Kiilerich b3743227be
Change tools --help URLs to use https 2022-10-24 04:57:30 +02:00
Robin Gareus 03295869ce
Revert "Small test tool for PBD::Transmitter thread-safety tests"
This reverts commit d9ce918c41.
2022-10-05 22:25:07 +02:00
Robin Gareus d9ce918c41
Small test tool for PBD::Transmitter thread-safety tests
Launch as
```
 ./session_utils/run ardour7-debug_transmitter
 ./session_utils/debug ardour7-debug_transmitter
```
2022-06-24 21:11:51 +02:00
Robin Gareus 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
Robin Gareus 73face7a8a
Revert "Small tool to test event-loop and x-thread signals "
This reverts commit 7780d38ed0.
and commit dfaf790e7d.
2022-05-02 00:31:33 +02:00
Robin Gareus dfaf790e7d
Add more debug messages to event-loop test tool 2022-05-01 23:24:36 +02:00
Robin Gareus 7780d38ed0
Small tool to test event-loop and x-thread signals (remove before release)
run as
```
session_utils/run ardour7-event_loop_test
```

Expected output:
```
TestUI::periodic
TestUI::periodic
TestUI::do_request
TestUI::static_signal_handler
TestUI::periodic
TestUI::periodic
TestUI::static_xthread_handler IO_IN
TestUI::periodic
TestUI::periodic
TestUI::~TestUI
TestUI::stop
```
2022-05-01 21:22:21 +02:00
Mads Kiilerich 49855e52aa wscript: consistently have at most one empty separator line 2022-04-09 12:16:40 +02:00
luz paz 3d395585c1
Fix various typos
Found via `codespell -q 3 -S *.po,./share/patchfiles,./libs -L ba,buss,busses,doubleclick,hsi,ontop,ro,seh,siz,sord,sur,te,trough,ue`  
Follow-up to 364f2f078
2022-04-08 19:51:02 +02:00
Mads Kiilerich 8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Paul Davis 4c4e4e545a remove unnecessary file/tool 2021-08-13 12:51:28 -06:00
Robin Gareus 16da5419d3
Do not implicitly modify VST support config parameters 2021-08-10 15:54:37 +02:00
Robin Gareus 0d8ee3e847
Catch errors instead of testing for nullptr 2021-07-10 17:47:18 +02:00
Robin Gareus a74b4e8ef0
No more wine 2021-07-03 19:07:25 +02:00
Robin Gareus 062aeb0262
Bail out if export cannot be started 2020-12-08 01:10:00 +01:00
Robin Gareus 962d8922ab
Enforce session-util app name
This fixes an issue with some macOS that create index oe
meta-data files e.g. `session_utils/._export.cc`.
Besides that it increases consistency.
2020-11-15 01:21:40 +01:00
Robin Gareus 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
Robin Gareus a7a20e03ff
Fix --no-nls, i18n include order in UI -- #8361 2020-08-19 17:40:02 +02:00
Robin Gareus 1e380b1e2e
GUI use updated XML::read_buffer API 2020-04-23 02:26:27 +02:00
Paul Davis 0f63b82943 fix error in multiple calls to SourceFactory::createWritable()
removal of tape tracks removed an intermediate argument in the argument list; presence of default args for the
last two arguments and implicit conversion from int->bool prevented the compiler from complaining
about any existing calls.

This supplements/extends a54b000a70
2020-03-23 21:47:13 -06:00
Robin Gareus 5794d21a76
Fix cross-compile linking (arm-linux ld)
Explicitly specify required libraries (waf does no longer
forward .uselib dependencies of libraries used by .use).
This leads to undefined symbols.
2020-02-14 00:20:45 +01:00
David Runge 2e9ac80e99
Towards waf python 2+3 support 2020-01-25 04:07:37 +01:00
Paul Davis a855119bdd rename all Evoral source from .(hpp|cpp)$ to .(h|cc) 2019-11-02 16:32:18 -06:00
Robin Gareus e0d5c1426c
NO-OP: fix some Wimplicit-fallthrough
gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.

see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2019-09-18 17:37:54 +02:00
Robin Gareus ce7d2a4f2a
Add missing i18n include (after 7f3f201833) 2019-09-18 04:32:51 +02:00
Paul Davis bd229936ec add finite state machine to control/manage transport state 2019-09-17 18:26:03 -06:00
Robin Gareus 316880b9cf
Don't print usage to stdout for invalid parameters 2019-08-15 01:09:26 +02:00
Robin Gareus 365f6d6337
Update plugins/addons GPL boilerplate and (C) from git log 2019-08-03 15:53:18 +02:00
Robin Gareus dbd8d491e5
Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
Ben Loftis edde5d64a2 (Source List) Clean up the natural_position implementation (libardour part). 2019-08-01 12:11:31 -05:00
Robin Gareus d33423a8bd
Add session-util to create new session 2019-07-18 15:52:46 +02:00
Robin Gareus dbc0c54ced
Use exit-status macros for compatibility 1/3 2019-07-04 22:21:14 +02:00
Robin Gareus 25eb8ca593
Fix session-export util (timecode: frames, not samples) 2019-04-09 03:28:23 +02:00
Paul Davis 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
Robin Gareus 5c08a6a85d Wimplicit-fallthrough fixes for tools/utils 2018-10-26 14:53:53 +02:00
Robin Gareus 7c5f1cce84 Yet another spelling mistake fix 2018-02-28 20:48:49 +01:00
Robin Gareus c91a1906cb Fix a typo in session-utils (thanks to IOhannes/debian for reporting) 2018-02-28 20:40:38 +01:00
Robin Gareus 8916784352 Update session-utils Readme 2017-09-27 20:03:08 +02:00
Robin Gareus e96fd26f3f Minor refinement of new session util 2017-09-27 18:50:24 +02:00
Robin Gareus 476952f2b6 Add session-util to create a new empty session 2017-09-27 18:22:49 +02:00
Paul Davis 7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
Paul Davis 30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Robin Gareus 0301326656 Add options to set bit-depth and bwf to session-export util. 2017-08-06 18:00:52 +02:00
Robin Gareus bc713b00c3 Improve help text and error-reporting for ardour-export 2017-08-06 14:47:50 +02:00
Robin Gareus d98b722a28 Fix session-export --samplerate option 2017-08-06 14:34:24 +02:00
Tim Mayberry 0c75813129 Use XMLNode::set_property API in copy-mixer Session utility 2017-04-19 09:36:57 +10:00
Robin Gareus 17881b3221 update UI, new info API, display created_version in tooltip 2017-01-20 18:16:32 +01:00