Commit Graph

1347 Commits

Author SHA1 Message Date
Robin Gareus
ff7bd23661 NO-OP: comments 2020-11-10 19:31:25 +01:00
Robin Gareus
512b47c878 micro-optimization (skip atomic test) 2020-11-10 19:31:09 +01:00
Robin Gareus
01cdaa49b4 Fix gcc-4.x/C++98 builds (amend f87de76b9f)
This resolves error: invalid use of 'unary *' on pointer to member
error: 'volatile gint RCUManager<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<ARDOUR::Port>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<ARDOUR::Port> > > > >::active_reads' is protected
2020-11-10 18:41:27 +01:00
Robin Gareus
b1846a578d NO-OP: whitespace, doxygen formatting and naming 2020-11-10 17:05:22 +01:00
Hector Martin
f87de76b9f RCU: Fix race condition between writer/reader
This uses an atomic counter and spins only on the writer side, which
preserves realtime behavior on the reader side. The spinning yields (by
using the same Boost function from Boost spinlocks) to be
scheduler-friendly.

Fixing this bug also lets us be able to confidently drop garbage early
in the writer if appropriate, so do that and avoid keeping dead wood if
possible.

This reverts commit f95439a502:
"add spinlock to RCU manager to protect concurrent reader() and update() calls"
2020-11-10 17:05:16 +01:00
John Emmas
5f082e2c9d Add an extra option when querying Windows registry keys
(this option will be needed when 32-bit Ardour is running in 64-bit Windows)
2020-11-09 11:35:35 +00:00
Paul Davis
f95439a502 add spinlock to RCU manager to protect concurrent reader() and update() calls 2020-11-08 11:28:10 -07:00
Robin Gareus
01f9332458 Fix RCU Unit-test on macOS/X
Apple's pthread does not implement barriers
2020-11-07 10:37:52 +01:00
Robin Gareus
88fc0ed392 Add RCU unit test 2020-11-05 02:24:54 +01:00
Robin Gareus
cf0904f752 Handle vfork/exec failure
Don't call atexit, exit without cleanup.
2020-10-31 22:33:10 +01:00
Robin Gareus
a9bd7b2848 Remove unused compile-time option to not use vfork 2020-10-31 22:30:45 +01:00
Robin Gareus
7896c30508 Fix cmdline parameter escape 2020-10-31 13:42:14 +01:00
Robin Gareus
f509a7e003 Extend convenience API to query windows registry 2020-10-30 13:15:06 +01:00
Robin Gareus
54829492ca Fix glib/glibmm includes 2020-10-24 04:14:38 +02:00
Robin Gareus
8852069ead Consolidate code: add library method to query Windows registry 2020-10-24 03:56:47 +02:00
Robin Gareus
1fa05b4764 Generate header before building dependency graph 2020-10-16 02:35:51 +02:00
Robin Gareus
fe8a05d6c9 libpbd signals.h depends on signals_generated.h
This fixes building with large concurrency where signals_generated.h
may otherwise be generated to late.
2020-10-15 05:45:51 +02:00
Robin Gareus
547032afac Fix alignment unit-tests and ARM/NEON alignment 2020-10-15 03:55:42 +02: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
9a4237ba83 Add debug transmitter
This is in preparation to conveniently duplicate debug messages
to Window > Log. For cases where stdout/err is not easily accessible.
2020-10-13 21:27:16 +02:00
Robin Gareus
140e03bb7d Make windows-console setup code re-usable 2020-09-20 19:57:08 +02:00
mx
262281bc1f Use soundtouch for vocal audio time stretching (1/2) 2020-08-26 19:04:58 +02:00
Robin Gareus
34159e4594 Fix ARM runtime NEON detection 2020-08-24 22:03:28 +02:00
Robin Gareus
a0a4477c84 Fix aarch64 builds 2020-08-24 21:26:38 +02:00
Ayan Shafqat
1f878636c8 Adding NEON detection during runtime 2020-08-24 02:06:35 +02:00
Emilio Norrmann
d21337a3a4 fixed typo 2020-08-19 19:02:37 +02:00
Robin Gareus
d3685784aa Fix numeric sort: use decimal or hex (but not octal)
This fixes sort order of plugin-presets or parameter
scale-points with leading zeros.
2020-08-09 14:45:39 +02:00
Robin Gareus
c2618903ae Allow to overload drop_references()
This is useful in cases where an object owns child objects
which in turn hold a reference to the parent.

In this case PluginInsert has-a Plugin, which may have a reference
to the insert or the Route.
2020-08-05 22:35:35 +02:00
Ben Loftis
a2f4521e77 Short-circuit gain interpolation if the change is negligibly small 2020-07-21 18:37:32 -05:00
Robin Gareus
fa495b7727 Account for additional TLS on macOS/X
On GLIBC systems pbd_stack_size() adds __pthread_get_minstack,
this is no available on mac systems, causing issues with some
libraries used by plugins.
2020-07-21 23:10:01 +02:00
Robin Gareus
6d950d15ba Use signed int for atomic operations -- #8314 2020-07-16 16:13:21 +02:00
John Emmas
8cea355906 Moving Controllable::set_interface() into a 'cc' file makes it easier to fix our MSVC build issue (with min + max) 2020-06-20 09:38:00 +01:00
Paul Davis
71f088dbbd move virtual method requiring std::min from header into .cc
The method is virtual so it could never have been inlined anyway
2020-06-18 16:26:44 -06:00
Paul Davis
0d8fac079d The presence of "using std::***" in any header file is not acceptable. Do not revert or change this.
Revert "Partially revert commit #23feb0491e"

This reverts commit 3b5546cfce.
2020-06-18 16:19:18 -06:00
John Emmas
3b5546cfce Partially revert commit #23feb0491e
For MSVC, the 'using std::' statements are needed when building anything which #includes 'pbd/controllable.h' (never quite figured out why...)
2020-06-18 12:46:05 +01:00
Robin Gareus
23feb0491e Remove using std::min/max from header 2020-06-18 01:05:48 +02:00
Robin Gareus
c424e4d61c Allow to set group-override with common set_interface() API 2020-06-18 00:42:09 +02:00
Matthias von Faber
e3dcd1f5d7 Only try using __pthread_get_minstack on glibc
This is a glibc-only extension, so don't bother on other platforms.
Also, according to POSIX, PTHREAD_STACK_MIN is defined in limits.h, so
include climits just to be safe.
2020-06-09 17:39:24 +02:00
Robin Gareus
c7bce4b685 NO-OP: whitespace 2020-06-07 18:25:18 +02:00
Robin Gareus
21b8885fe9 Remove debug output (also fix some builds, missing stdio.h) 2020-06-07 18:18:58 +02:00
Robin Gareus
27e45c585f Fix another stupid typo 2020-06-06 23:03:21 +02:00
Robin Gareus
e0548fa798 Offset stack-size by current TLS #8200
Some libraries use thread locals and hence increase the min
requirement.

This is seen on void-linux for example:

> linking a minimal program against cairo gives a
> __static_tls_size of 43008 bytes.
> Doing the same on Ubuntu focal and Debian bullseye,
> __static_tls_size is only 4608.
2020-06-06 19:04:26 +02:00
Robin Gareus
515ffbdfe2 Add API to create threads with given stacksize 2020-06-06 18:32:09 +02:00
Paul Davis
a660077c97 PlaybackBuffer: extend API to include write_ptr()
It's just useful
2020-05-13 23:55:02 -06:00
Paul Davis
98d56d6b21 Add API to PlaybackBuffer to compute amount of data that can overwritten
The distance is between a given offset in the buffer (probably a
read position at some point in time) and the write ptr. Any data after
the write ptr is "old" and not readable, and thus not worth overwriting
since we would not read it anyway.
2020-05-12 11:34:37 -06:00
Robin Gareus
dbcbfd7b5b Fix builds, missing include 2020-04-24 01:53:59 +02:00
Robin Gareus
afad873a22 Fix parsing XML with blanks from memory
This is needed when the butler thread loads a plugin with
MIDNAM. xmlKeepBlanksDefault() setting is per thread.

see also df3a4ed9c6
2020-04-23 02:28:48 +02:00
Robin Gareus
705ac7bfc5 Prevent huge stack allocations for MIDNAM files
xmlParseMemory() uses a c-pointer char*.
Previously MIDNAM data on the heap were wrapped inside
a std::string only to be later accessed via c_str().
2020-04-23 02:25:38 +02:00
Robin Gareus
3d166c7789 Consolidate stack-size and priority of rt-threads 2020-04-23 01:28:58 +02:00
Robin Gareus
ea2bda6668 Fix playback alignment when adding/removing channels
The disk-reader assumes that all playback ringbuffers are in sync
and have the same fill_level.
2020-04-14 03:57:26 +02:00