Commit Graph

716 Commits

Author SHA1 Message Date
Robin Gareus
379115a20e Fix MacOS 10.11 (clang-8.0.0) builds
gcc, and recent clang-10 can construct new objects
using references as arguments.

However clang-8 (and MSVC?) do not:
   "error: no matching function for call to 'operator new'"

The compiler apparently does not expand the template
  class A  <-> `A*`  vs. `A const&`
for different cases.
2020-03-09 18:33:11 +01:00
Robin Gareus
50556db405 Add a STL Allocator using the stack (for rt safety)
This is a dumb stack allocator using LIFO allocation/free, with
a fallback to new/delete. This works well for small STL containers
in particular std::vector, but it's also suitable for std::map<>,
in particular copy constructing small POD maps (plugin pin mappings).

Eventually this could be combined with TLSF for a flexible
memory arena management. This is however not currently needed
for any the planned use-cases.

This code is ANSI C++98 compatible, and yet also works with
modern C++11, C++14
2020-03-06 19:13:44 +01:00
Robin Gareus
016eaddad7 NO-OP: whitespace, re-indent 2020-02-28 06:08:26 +01:00
Robin Gareus
4b28e4ee3c Fix some recursive undo removal
~StatefulDiffCommand() may trigger UndoTransaction::command_death()
which may delete the StatefulDiffCommand() that's just being destroyed.

This depends on the signal-connection order, which is undefined.
In any case when a shared_ptr<> object is being destroyed it means
that all references to it are already gone. There's no need to
emit drop_references from the d'tor.
2020-02-28 06:06:44 +01:00
Robin Gareus
73c5bdd3cb Fix double free of undo commands (amend 9e6435ff14)
This fixes a case when deleting a plugin, deletes all automation
undo/redo events:
  <UndoTransaction name="add automation event">
    <MementoCommand type-name="ARDOUR::AutomationList">
   ...


`delete this;` calls the d'tor which emits drop_references(),
that leads to UndoTransaction::command_death() destroying the
object, whichh causes a double free.
2020-02-28 02:09:58 +01:00
Robin Gareus
aa3f7f2414 Remove undo function from global namespace 2020-02-25 20:09:47 +01:00
Robin Gareus
7532571fb2 NO-OP: whitespace 2020-02-25 17:55:51 +01:00
Ben Loftis
4f5076a81a controllable::{get_set}_interface() are convenience wrappers for funcs that need the Rotary flag set 2020-02-20 12:25:51 -06:00
Paul Davis
ca3714bccf NOOP: fix brace/newline use 2020-02-20 00:09:32 -07:00
Paul Davis
d1b335b36e expose PlaybackBuffer::reservation and make the member const 2020-02-19 23:10:13 -07:00
Paul Davis
58123c969b remove unused method 2020-02-19 23:09:51 -07:00
Robin Gareus
f62fb6dd98 Remove unused dummy control class
PBD::IgnorableControllable() is no longer used.
It also was problematic, because in every case where a
Controllable is required, min/max range and usually also
get/set value are significant.
2020-02-19 17:03:46 +01:00
John Emmas
75aaae9963 Fix two more cases of of C99 strtoll() 2019-12-31 10:11:18 +00:00
Robin Gareus
def4be7285 Fix MSVC builds, use C89 strtol() instead of C99 strtoll()
For the case at hand (plugin scale-points) it's highly unlikely to
encounter numbers > INT_MAX.
2019-12-30 19:05:51 +01:00
Robin Gareus
04a409df6f Add a numerically_less compare operator
This is similar to sort(1) --human-numeric-sort,
as opposed to naturally_less() negative numbers, hex-prefixes
and SI metric prefixes are taken into account.
2019-12-29 19:47:48 +01:00
Robin Gareus
93180ceea9 Add Inline Control Port Property
This allows to indicate that a control should by default be displayed
inline in the mixer-strip.

Previously that was hard-coded for and enabled for send-level
controls only.
2019-12-14 15:50:56 +01:00
Paul Davis
c3e3930f14 revert to single buffer for disk playback, and 5.x-style overwrite
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-10 09:29:22 -07:00
David Robillard
8ec3e5fb54 Fix deprecated-copy warnings
It's long been a guideline (and IIRC a Weff-c++ warning) that either all, or
none, of the copy methods should be defined, but this became a standard warning
in GCC9.  Presumably to account for a later language change though I'm not sure
which.

I don't remember why the ChanMapping copy constructor can't just be a simple
copy (it's just a map of POD), but figure it's safer to just copy what that
does.
2019-12-09 23:25:59 +01:00
Paul Davis
8d05f6d4b7 initial conversion to double buffering inside DiskReader
Second buffer is not used (or allocated) yet.
2019-12-07 10:30:38 -07:00
Robin Gareus
a8a699133e Fix child-process communication (video monitor in particular)
103ef2ba08 introduced an API to write raw data (const void*)
to a child process, along with the previous API to
write (std::string const&)

VideoMonitor uses write_to_stdin("fixed text"), and g++
interprets this to use the (const void*) API instead
of the std::string, which breaks communication.
2019-11-09 06:28:55 +01:00
Paul Davis
43eb64d23b add new debug bit (DebugTimestamps) that adds timestamps to all debug messages 2019-10-28 16:52:18 -06:00
Robin Gareus
c663a2d8ef Invert Pan-Azimuth (up means left)
It's a well established convention that pan y-axis automation,
or vertical uses (top) +1 for left.

This special cases rotary knobs (and horizontal sliders) to retain
a clockwise movement (or movement to the right) for panning to the
right.
2019-10-07 05:07:55 +02:00
Robin Gareus
feb5d1261e Fix use of doxygen documented parameters in running text 2019-09-30 06:30:11 +02:00
Robin Gareus
ee54b13d6d Fix some more doxygen warnings 2019-09-30 05:33:44 +02:00
Robin Gareus
959a37144b Fix a few hundred doxygen warnings..
There are still over a hundred left, but this addresses many already.
In particular @param references to undocumented parameters.
Most notably in audio_backend.h
2019-09-30 04:45:59 +02:00
Robin Gareus
5395a557d2 Another try at C++11/boost spinlock initialization 2019-09-26 02:48:17 +02:00
Paul Davis
f52781b46b fix thinko when testing for internal seek with negative distance 2019-09-17 17:59:23 -06:00
Robin Gareus
ffbf40c3d1 Add PBD API to hard-link files 2019-08-12 16:41:25 +02:00
Robin Gareus
0301c47f6b Update core library GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
Robin Gareus
4a52a9b3b0 Fix C++11 NSDMI 2019-07-31 04:48:52 +02:00
John Emmas
bf5da033dc Another try at fixing our 'spinlock_t' compatibility 2019-07-29 16:56:45 +01:00
Robin Gareus
63fee3b0c8 Prevent spinlock copy construction 2019-07-28 15:02:04 +02:00
Robin Gareus
d00650c2fd Another attempt at improving spinlock init 2019-07-28 15:01:40 +02:00
Robin Gareus
d382b756c2 Follow up d8ae3fd
Depending on implementation, d8ae3fd may only construct the spinlock
once to `sl_init`. Later it is only copy-constructed and that leads to
compile and/or runtmime errors.

e.g. gcc-8.3 fails to compile
error: use of deleted function ‘boost::detail::spinlock::spinlock(const boost::detail::spinlock&)’
2019-07-28 14:57:51 +02:00
John Emmas
d8ae3fd3a6 MSVC requires an already initialized object to initialize our boost::detail::spinlock (rather than the simpler #define)
Hopefully this'll work for the other builds too.
2019-07-27 12:31:15 +01:00
Robin Gareus
8a8468c5f1 Correctly initialize spintlock_t
Depending on underlying implementation, boost::detail::spinlock
needs to be explicitly initialized
2019-07-26 21:40:39 +02:00
Robin Gareus
929ecf622b Add lock-free multiple producer multiple reader queue 2019-07-10 20:21:06 +02:00
John Emmas
94036cc7c0 Correct a typo that crept in somewhere 2019-04-14 19:34:37 +01:00
Robin Gareus
2f91bdfa53 NO-OP: <tab> after <space> fixes in libs 2019-04-13 19:19:29 +02:00
Robin Gareus
e4f18c1771 NO-OP: whitespace & revert samples -> [stack]frames 2019-04-08 00:35:00 +02:00
Robin Gareus
854de91fb0 Fix mingw compile (declare int64_t and int32_t) 2019-03-26 15:35:36 +01:00
Robin Gareus
da114c5a4d Remove static Destroyed(*), prefer StatefulDestructable API
This also add a debug-dump method to show remaining registered
Controllables.
2019-03-23 16:15:23 +01:00
Robin Gareus
087fd57d37 Re-add Controllable registry
To facilitate a central registry with weak/shared pointer lookup,
  enable_shared_from_this<ARDOUR::AutomationControl>
was migrated to
  enable_shared_from_this<PBD::Controllable>

The main (and only) user is generic-midi surface's state interface :(
2019-03-23 04:23:43 +01:00
Robin Gareus
16fe286ed9 Use weak-pointer for Controllable learning 2019-03-23 01:50:45 +01:00
Robin Gareus
1dedadd03f Remove c-pointer Controllable* registry 2019-03-23 01:42:03 +01:00
Robin Gareus
9a1c22d7e1 Remove unusued API Create/Delete Binding 2019-03-23 01:28:23 +01:00
Paul Davis
b53d80a7d4 make PlaybackBuffer<T>'s power-of-two size computation available to others 2019-03-18 07:39:23 -07:00
Robin Gareus
e1ffe7857f Use enum for exec stderr parameter (1/2) 2019-03-05 22:49:15 +01:00
Robin Gareus
7ae1825a3c Remove cruft, unused files 2019-02-28 18:04:42 +01:00
Robin Gareus
c6e2e0a948 Clean up remnants from a half eaten apple 2019-02-28 18:00:08 +01:00