Robin Gareus
92bcddb437
Emit Signal when MCSS Threads are exhausted
...
By default Windows has limit of 32 MMCSS threads.
Ardour uses MMCSS scheduling for for hardware I/O (audio and MIDI)
as well as for realtime process threads, and a user on a
recent machine may run into this limit.
2025-08-16 23:11:16 +02:00
Robin Gareus
5ffc3aa28b
Use PBD namespace for free CPU functions
...
Ideally never put methods in the global namespace
to prevent potential conflicts.
2025-08-15 22:10:31 +02:00
Robin Gareus
b1d5f065db
Add API to query max MMCSS threads on Windows
...
By default Windows limits the number of MMCSS threads to 32.
This can cause problems on modern systems with >= 32 cores,
when Ardour uses many process and I/O threads.
So far this is just a first step (query API)
2025-08-15 22:02:44 +02:00
John Emmas
b795d36cd3
Avoid using 'boost::aligned_storage' which is known to be problematic in MSVC builds
...
MS initially believed the runtime issues might be fixable in VS2015 but in fact, Boost's alignment strategy and Microsoft's alignment strategy just turned out to be incompatible:-
https://www.boost.org/doc/libs/1_65_0/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html
2025-06-17 09:02:24 +01:00
Robin Gareus
0803cac946
Fix optimized builds
2025-06-07 01:53:33 +02:00
Paul Davis
cc435bcd0f
make connection/emission debugging of PBD::Signal more useful/informative
2025-06-06 09:07:45 -06:00
Robin Gareus
b92fa1d0e4
Use PBD::CCurl for libardour HTTP/S requests
2025-05-20 00:03:21 +02:00
Robin Gareus
4f300b5474
Migrate SSL-cert setup to libpbd, so the downloader can use it
2025-05-20 00:03:21 +02:00
Robin Gareus
d537cdf60b
Fix windows build (see also e44a66287a)
2025-05-19 18:39:13 +02:00
Robin Gareus
e44a66287a
Correctly detect localtime_r
2025-05-18 20:08:27 +02:00
Robin Gareus
6c8a2ec05b
Fix false read-only detection of sessions on Windows with OneDrive
...
see https://discourse.ardour.org/t/ardour-8-4-on-win11-amd64-always-opens-session-in-read-only-mode/110063/38?u=x42
2025-05-14 20:21:44 +02:00
Paul Davis
1c0882ba56
PBD::Signal: do not use a StackAllocator for signals with return values
2025-05-09 14:21:05 -06:00
Nils Philippsen
3c63a81c1c
Don’t install test programs
...
Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2025-05-06 23:42:07 +02:00
Paul Davis
2a7bef47fa
return immediately in a non-void Signal if there are no handlers
...
This allows r.begin(() to not refer to undefined memory
2025-05-05 21:51:23 -06:00
Paul Davis
cf84ed0041
use a std::vector to collect signal handler return values, not std::list
2025-05-04 19:21:50 -06:00
Robin Gareus
e3860844a6
Improve StackAllocator debug messages
2025-05-04 23:41:22 +02:00
Paul Davis
02aeb3895f
NO-OP: newline/whitespace/brace
2025-04-24 12:07:19 -06:00
John Emmas
d285ff365e
Add a visibility specifier that's now needed
...
Following the introduction of 'Pianoroll::region_prop_change()' (commit #29833d75c9 ) the operator<< (for PBD::PropertyChange) now needs to be visible outside of libpbd
2025-04-19 13:33:36 +01:00
Paul Davis
ebda6bf0c5
rework PBD::Signal emission code to avoid memory allocation
...
We now use a stack allocator when making a copy of current connection state at
the start of the signal emission process, and when collecting results from
signal handlers in the case of a non-void return type.
These changes also include a functionally neutral reworking of how the connection
state copy is made and then used to check that a connection/handler is still
valid mid-emission.
Heap allocation will still happen if a signal has more than (currently) 512
connections. A little experimentation reveals that the maximum number of
connections is typically nroutes+1, so 512 seems like a reasonable choice
for this.
2025-04-16 09:09:57 -06:00
Paul Davis
f66f81546d
fix several warnings from PBD::Signal due to a missing return call for some types
2025-04-15 22:34:49 -06:00
Paul Davis
a46f2cefb4
PBD::Signal - move connection list back into private scope (amend 86c837b0e)
2025-04-14 10:45:46 -06:00
Paul Davis
86c837b0eb
provide deeper debugging of PBD::Signal emission process
2025-04-14 10:10:57 -06:00
Robin Gareus
db16c8818c
Add debug messages to investigate Windows/OneDrive read-only sessions
2025-04-05 18:23:28 +02:00
Paul Davis
71f93d3c12
provide a stacktrace function callable directly from C (libpbd_c_stacktrace())
2025-02-11 10:23:01 -07:00
Paul Davis
809d605a4a
improve stacktraces on macOS involving Objective C
2025-02-11 10:23:00 -07:00
Robin Gareus
728e0c0144
Build fixes for NetBSD from pkgsrc ( #9886 )
2025-02-01 11:25:42 +01:00
Paul Davis
456a8bcabf
autofication of some loops in Stateful::apply_changes() and avoidance of a loop in non-debug builds
2025-01-29 17:40:57 -07:00
Robin Gareus
4a99026cc9
Revert "Replace boost::aligned_storage with alignas std::array"
...
This reverts commit 32ff87f7f6 .
This causes issues on macOS/clang
```
../libs/pbd/pbd/stack_allocator.h:152:53: note: destructor of 'StackAllocator<std::__tree_node<std::__value_type<ARDOUR::DataType, std::map<unsigned int, unsigned int, std::less<unsigned int>, PBD::StackAllocator<std::pair<const unsigned int, unsigned int>, 16>>>, void *>, 2>' is implicitly deleted because field '_buf' has a deleted destructor
152 | alignas(16) std::array<value_type, stack_capacity> _buf;
```
2024-11-19 18:03:23 +01:00
Alejandro Domínguez
fa57d5ed86
Disambiguate std and boost placeholder
2024-11-17 20:20:23 +01:00
Alejandro Domínguez
32ff87f7f6
Replace boost::aligned_storage with alignas std::array
2024-11-17 18:43:08 +01:00
Paul Davis
b8e1f67b75
C++ demangnling: make it work on macOS as well as linux
2024-11-10 22:07:58 -07:00
Mads Kiilerich
b4ff4f356c
Make header files more self-contained - add missing Ardour and lib includes
2024-10-20 03:30:46 +02:00
Mads Kiilerich
8a5f21d8e3
Drop some unused files - avoid trying to maintain stuff that can't be tested
2024-10-20 03:11:53 +02:00
Mads Kiilerich
140670541f
Use .inc.h for #include files that not are plain headers
...
Regular .h files *should* be self-contained and independent of previous
includes and guarded to only include once. Make it clear which files
that *doesn't* apply for at all.
2024-10-20 03:11:53 +02:00
Robin Gareus
0d71876189
signals_generated.h is no longer required
2024-10-19 21:54:34 +02:00
Robin Gareus
74c4ca3e52
Reduce reliance on boost - the hard part
...
the rest from `tools/convert_boost.sh`.
* replace boost::function, boost::bind with std::function and std::bind.
This required some manual fixes, notably std::placeholders,
some static_casts<>, and boost::function::clear -> = {}.
2024-10-19 03:47:21 +02:00
Robin Gareus
ff95d81612
Reduce reliance on boost - the easy part
...
* boost::unordered_map -> std::unordered_map
* BOOST_STATIC_ASSERT/static_assert
* BOOST_FOREACH -> for
* boost::tuple -> std::tuple/g
* boost::math::isnormal -> std::isnormal
* boost::container::set -> std::set
* boost::none -> std::nullopt
* boost::optional -> std::optional
2024-10-19 03:41:16 +02:00
Alejandro Domínguez
2436b4df06
Replace boost::noncopyable with C++11 deleted copy constructors
2024-10-19 01:04:15 +02:00
Alejandro Domínguez
1ffb70f670
Replace boost::scoped_ptr with std::unique_ptr (1/2)
2024-10-19 01:04:14 +02:00
Robin Gareus
bd8525e5f1
Remove deprecated PBD::SignalN
2024-10-18 20:46:31 +02:00
Robin Gareus
2d7cce44f1
Replace PBD::Signals (1/2)
2024-10-18 20:41:08 +02:00
Alejandro Domínguez
0ade0b2212
Deduplicate SignalWithCombiner<Combiner, void, A...> specialization
2024-10-18 20:41:08 +02:00
Alejandro Domínguez
16dd8528c8
Make SignalN template variadic
2024-10-18 20:41:05 +02:00
Paul Davis
75f56cd3e1
the great onceification (libs)
...
Replace use of #ifndef header guards with #pragma once
Modern C++, baby!
2024-10-17 07:44:31 -06:00
Paul Davis
7901b4119f
we're gonna need a bigger debug set
2024-10-17 07:44:31 -06:00
Paul Davis
911ad78c06
add API to access PBD::UndoHistory member of HistoryOwner
2024-10-17 07:44:31 -06:00
Paul Davis
8c086693af
show HistoryOwner::_name in DEBUG_TRACE messages
2024-10-17 07:44:31 -06:00
Paul Davis
d30c8a1286
abstract concept of a history owner from ARDOUR::Session into libpbd
2024-10-17 07:44:31 -06:00
Paul Davis
7799adc8db
make Stateful a virtual base class of StatefulDestructible
...
This permits dual inheritance from Stateful.
2024-10-17 07:44:29 -06:00
Robin Gareus
8115578d4e
Add RT thread priority debugging
2024-10-14 21:49:56 +02:00