summaryrefslogtreecommitdiff
path: root/libs/pbd
AgeCommit message (Collapse)Author
2020-03-13mingw/gcc-8: use glib's stat(), drop hardlink supportRobin Gareus
2020-03-11fix apparent free-ordering issue reported in #7926Paul Davis
2020-03-11Fix win32, mingw/gcc-8.3 buildsRobin Gareus
2020-03-10Add convenience ControlFlags operatorsRobin Gareus
Explicit functions for operator&=~ and operator|=
2020-03-09Fix MacOS 10.11 (clang-8.0.0) buildsRobin Gareus
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-06Add a STL Allocator using the stack (for rt safety)Robin Gareus
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-02-29Fix 'samples / frames' typo in PBD::stacktrace()John Emmas
2020-02-28NO-OP: whitespace, re-indentRobin Gareus
2020-02-28Fix some recursive undo removalRobin Gareus
~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-28Fix double free of undo commands (amend 9e6435ff145)Robin Gareus
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-25Fix mem-leak, Playlist/Region SessionHandleRefRobin Gareus
When a playlist is deleted and drops_references(), any undo/redo StatefulDiffCommand referncing playlist invoke Destructible::drop_references() of the Command. This leads to command_death(). As opposed to UndoTransaction::clear() the StatefulDiffCommand was not destroyed. In case of playlists StatefulDiffCommand::_changes contains PBD::SequenceProperty<std::list<boost::shared_ptr<Region> > > and shared pointer reference of the playlist regions were kept indefinitely. This fixes the following scenario: New session, import an file, delete the created track, clean up unused sources (delete unused playlists)[, quit]. A reference to the imported region was kept, because of the playlist's undo command (insert region). Yet the source file was deleted. PS. Most playlist changes are accompanied by GUI zoom/selection MementoCommands. Those are currently never directly dropped. command_death() leaves those in place.
2020-02-25Remove undo function from global namespaceRobin Gareus
2020-02-25NO-OP: whitespaceRobin Gareus
2020-02-24Tweak mach thread priority debug msgRobin Gareus
2020-02-24Fix setting CoreAudio RT-priorityRobin Gareus
2020-02-20Fix Inline-control visibility stateRobin Gareus
This fixes an issue when copy/pasting plugins or aux-sends from one track to another. After copying the processor, the state is copied, however the Controllable state did save the InlineControl flag, so this as lost. (amend 93180ceea)
2020-02-20controllable::{get_set}_interface() are convenience wrappers for funcs that ↵Ben Loftis
need the Rotary flag set
2020-02-20NOOP: fix brace/newline usePaul Davis
2020-02-19expose PlaybackBuffer::reservation and make the member constPaul Davis
2020-02-19remove unused methodPaul Davis
2020-02-19Remove unused dummy control classRobin Gareus
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-07Changes needed for building with MSVCJohn Emmas
Mostly these are to do with TLSF which I hadn't in fact been building!! Hopefully there won't be any problems for the gcc builds.
2020-01-27Fix building unit-testsRobin Gareus
2020-01-25Towards waf python 2+3 supportDavid Runge
2020-01-14NO-OP: whitespaceRobin Gareus
2020-01-05remove unnecessary call to xmlKeepBlanksDefault()Paul Davis
2020-01-05move call to xmlKeepBlanksDefault(0) to before the creation of an XML parser ↵Paul Davis
context the value is used by the parser context; the old code called it only after the *first* parser context was created. therefore the first XMLTree::read() call has its behavior determined by libxml2's default for this value, rather than by our explicit choice (do not treat whitespace as a note). All subequent read() calls will use our value. This variable inside libxml2 is actually per-thread, which just increases the stakes for calling xmlKeepBlanksDefault() at the right time
2020-01-05repeat baf0cdcbef1 but for BaseUI, thus covering all control protocolsPaul Davis
2019-12-31ensure that xmlKeepBlankDefault() is called early in instance-life, from ↵Paul Davis
PBD::init() See comment for details on why
2019-12-31Fix two more cases of of C99 strtoll()John Emmas
2019-12-30Fix MSVC builds, use C89 strtol() instead of C99 strtoll()Robin Gareus
For the case at hand (plugin scale-points) it's highly unlikely to encounter numbers > INT_MAX.
2019-12-30use a local version (copy) of the G_SOURCE_FUNC macro, since it is not ↵Paul Davis
available in the GTK+ version we use for the official build stack
2019-12-29Add a numerically_less compare operatorRobin Gareus
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-14truncate unnecessarily verbose debug set/bits outputPaul Davis
2019-12-14Add Inline Control Port PropertyRobin Gareus
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-10revert to single buffer for disk playback, and 5.x-style overwritePaul Davis
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-09Fix deprecated-copy warningsDavid Robillard
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-09Fix catch of polymorphic type by valueDavid Robillard
2019-12-08MSVC project changes needed to support the new 'mp3 import' stuffJohn Emmas
2019-12-07initial conversion to double buffering inside DiskReaderPaul Davis
Second buffer is not used (or allocated) yet.
2019-11-09Remove invalid error messageRobin Gareus
This clause is in NO_VFORK, vfork_exec_wrapper is irrelevant there
2019-11-09Fix child-process communication (video monitor in particular)Robin Gareus
103ef2ba08e5 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-06move at-exit messages about pool utilization to DEBUG_TRACEPaul Davis
2019-11-03Fix build -- 'printf' was not declared in this scopeRobin Gareus
2019-11-02make it more likely that debug messages are printed without x-thread ↵Paul Davis
interruption
2019-11-01Fix XML-writer edge-case (empty content)Robin Gareus
2019-10-28add new debug bit (DebugTimestamps) that adds timestamps to all debug messagesPaul Davis
2019-10-07Invert Pan-Azimuth (up means left)Robin Gareus
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-09-30Fix use of doxygen documented parameters in running textRobin Gareus
2019-09-30Fix some more doxygen warningsRobin Gareus