13
0
Commit Graph

1047 Commits

Author SHA1 Message Date
22ed6fb1f7 Accommodate newly introduced source(s) in our MSVC project (libpbd) 2016-02-27 16:29:52 +00:00
0e36f8e2d7 missing include for rand() in self-tests 2016-02-23 22:55:17 +01:00
f2afb95c5d add realloc pool to MSVC project 2016-02-22 22:06:47 +01:00
3c87629c7e realloc-pool unit-test 2016-02-22 22:06:47 +01:00
6cf5e989c0 time-bound memory-pool
O(1) realloc() for use with Lua.
A standard malloc/free/realloc API is exposed for testing and other
potential use-cases.

The current configuration it's performs well for lua-metatables
(regular calls to realloc() with varying tiny chunks ~1-50 bytes)
For the use-case at hand it outperforms TLSF.
2016-02-22 22:06:47 +01:00
e9234c856a add syntax and scaffolding for MIDI binding maps to refer to selected tracks/busses.
THIS DOES NOT WORK YET. Selection information is not available in libardour at this time
2016-02-22 15:31:25 -05:00
Adrian Knoth
6fa88273aa Spelling correction patch from Debian
Patch taken (and forward-ported to HEAD) from
<https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/plain/debian/patches/0100-fix-typos.patch>
2016-02-22 15:13:01 -05:00
ec708926fa now with return value 2016-02-17 17:03:14 +01:00
5e50a7d6cf allot to open OSX Finder with arbitrary paths 2016-02-17 16:29:25 +01:00
455f07d087 fix rare livelock in std::map thread_buffer_requests
During initial session load it's possible that two threads call
PBD::notify_event_loops_about_thread_creation() simultaneously
(in particular the process threads). This can lead to an
endless loop in stl_tree.h when assigning thread_buffer_requests[key]

Now we only have WriteLocks.. unless some better solution comes up a
Mutex will do.
2016-02-14 02:13:04 +01:00
820bd0fe51 and another typo in d442190b 2016-02-14 00:10:41 +01:00
09167d3e59 fix typos in d442190b 2016-02-14 00:02:00 +01:00
d442190b8a slightly improved windows post-export hook support. 2016-02-13 23:12:50 +01:00
73245c6217 some half-baked support for windows command-arg substitutions 2016-02-13 17:04:11 +01:00
108528b63d amend d814acb - SystemExec/Export debugging 2016-02-13 01:39:41 +01:00
d814acbb8f add some debugging capability for users of SystemExec. Needs review. 2016-02-12 18:22:12 -06:00
2429308bac Open URis with spaces. 2016-02-11 16:43:35 +01:00
57b9dab27c manually revert ec8cf4e4 with an extra comment explaining the significance 2016-02-03 11:45:23 -05:00
ec8cf4e4f5 Fix µ-iness. 2016-01-27 23:39:35 +01:00
23794eca5b rename Controllable::WholeGroup => InverseGroup to reflect real intent.
Add logic to RouteGroupMember::use_group() to implement the real intent of InverseGroup
2016-01-22 11:58:31 -05:00
cd401f5ab4 add new enums to libs/pbd enums registration 2016-01-18 12:11:09 -05:00
9d65e6084c clean up functors used in cross-thread call_slot() messages, in case they contain shared_ptr<T>, which could result in a dangling reference 2016-01-16 09:33:31 -05:00
2386410e4a remove debug output 2016-01-14 11:00:50 -05:00
9ab92a67c8 use correct type of lock when removing a thread request buffer 2016-01-14 11:00:40 -05:00
35807a1929 fully clean up request buffers when a thread dies 2016-01-14 10:53:32 -05:00
077c65cc2a manually revert 4b3043cc and 141e6fb8181; add detailed explanatory comment 2016-01-14 09:05:06 -05:00
141e6fb818 don't pick up already dead thread request buffers when setting up an event loop 2016-01-13 23:25:17 -05:00
4b3043ccda use a unique key to store per-thread request buffers 2016-01-13 23:00:02 -05:00
d3ad5c16d1 yet more event loop debug tracing 2016-01-13 21:13:55 -05:00
6d04a66eea more event loop debugging 2016-01-13 19:48:17 -05:00
3e45254257 typo fix 2016-01-13 18:14:52 -05:00
f3c9f5894a lots more DEBUG_TRACE statements for analysing malfunctioning system 2016-01-13 17:03:49 -05:00
bcb865c235 improved debug trace messages from BaseUI class 2016-01-12 22:11:44 -05:00
f1d0de029d remove debug output 2016-01-10 23:34:10 -05:00
9e3299f97d change Controllable::set_value() API to include grouped control consideration.
This also removes Route::group_gain_control() and associated machinery.
Not yet tested with Mackie or other surfaces. More work to done to
start using the group capabilities, and also potentially to add
or derive more controls as RouteAutomationControls
2016-01-02 04:58:30 -05:00
80a730550d clang build fix (uint32_t is not declaed) 2015-12-29 18:49:56 +01:00
23333a271e fix windows/mingw builds 2015-12-29 10:30:27 +01:00
0d9efc1148 redesign cross-thread registration/signalling system
This new design will work even when threads that need to receive
messages from RT threads are created *after* the RT threads. The
existing design would fail because the RT thread(s) would never
be known the later created threads, and so signals emitted by the
RT thread and causing call_slot() in the receiver would end up
being enqueued using a lock-protected list. The new design ensures
that communication always uses a lock-free FIFO instead
2015-12-28 10:14:17 -05:00
d880645cac Modify our MSVC project to accommodate newly introduced/removed source files (libpbd) 2015-12-23 15:09:17 +00:00
b48d87b3ea add API to query stateful ID override mode 2015-12-17 23:18:22 +01:00
6e13b91a35 portable pthread_self() debug message 2015-12-13 11:28:56 +01:00
f32fc212f3 change AbstractUI implementation to use EventLoop::event_loop_name() and add extra DEBUG_TRACE statements to track thread registration with event loops 2015-12-12 11:12:10 -05:00
a419fb5af0 fix endless-loop-at-shutdown bug now that abstract UI request buffers are used 2015-12-12 11:12:10 -05:00
f369f33955 move BaseUI::_name into EventLoop; rename access method in EventLoop as event_loop_name() to clarify usage 2015-12-12 11:12:10 -05:00
162352419d NO-OP re-indent 2015-12-12 14:54:52 +01:00
6a1799f095 remove invalid free. - fixes crash with generic midi surface
if there is a per_thread_request_buffer,  get_request() simply puts a
POD RequestType on the ringbuffer's head.  send_request() increases
the write-pointer.  There is no memory to free.
2015-12-12 14:52:35 +01:00
Kamil Rytarowski
2da6e45922 NetBSD: Stop hardcoding Python binary name
Caught with pkgsrc on NetBSD
2015-12-07 13:24:36 +01:00
c93f0b77bf rename ProcessSemaphore to Semaphore (libs) 2015-12-02 20:18:48 +01:00
15c958e32f consolidate semaphore implementation (part three) 2015-12-02 16:09:51 +01:00
003b632ed1 consolidate semaphore implementation (part one) 2015-12-02 16:03:28 +01:00
14d6470ad3 prefer pthread-semaphores (posix API) with mingw
Hopefully this resolves glitches on hyperthreading machines.
Apart from using unnamed Semaphores, pthread-w32 includes additional locks
(guess: mem-barriers), a fallback implementation and windows-specific
tricks that I'd rather not want to know about :)
2015-12-02 13:59:48 +01:00
7f3118c8fe Don't indent inside namespace declaration to be consistent with ardour style 2015-12-01 14:22:38 +10:00
e025415516 Use PBD::demangle_symbol in PBD::demangled_name<T> to reduce code duplication 2015-12-01 14:22:38 +10:00
36fa670309 Rename PBD::symbol_demangle and some variable names to improve readability
Rename PBD::symbol_demangle to demangle_symbol so the transitive verb is
infront of the object.

Rename some local variables and fix documentation.
2015-12-01 14:22:38 +10:00
5f4f89fb39 Move PBD symbol demangle functions into pbd/demangle.h/cc
Add pbd/demangle.cc source file and move functions from pbd/stacktrace.cc into
it
2015-12-01 14:22:38 +10:00
73d1de3b75 NOOP, remove trailing whitespace, replace tabs in python scripts 2015-11-29 17:54:31 +01:00
81103d822a use thread private data **pointer** correctly for Stateful::ID regeneration 2015-11-17 08:53:29 -05:00
d2cba4d7ac fix inadvertently commit error related to at-process-exit deletion for thread private variable 2015-11-16 21:55:57 -05:00
e1dc2d4604 correct value testing for Stateful thread-private variable controlling ID regeneration 2015-11-16 21:24:10 -05:00
92fe47bdee provide a mechanism to force ID regeneration/reset in PBD::Stateful when settingthe ID object from XML or string sources 2015-11-12 10:24:41 -05:00
a4daf93f2f Use XMLNode::remove_child_and_delete in Stateful::add_extra_xml
As the node being replaced has been added with XMLNode::add_child_nocopy the
node also needs to be deleted or a memory leak occurs.
2015-11-10 23:14:17 +10:00
4e6cdb4daa Use constructor initialization list in Stateful class 2015-11-10 23:14:16 +10:00
9e4dc284ee Replace spaces with tabs in pbd/stateful.h 2015-11-10 23:14:16 +10:00
7abfe85498 add API to suspend timers signal emission. 2015-10-30 15:55:26 +01:00
eb6b4f4b15 fix crash on SystemExec::Terminate
if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.
2015-10-23 23:29:04 +02:00
3bd928591b Add PBD::Searchpath::contains method to check if a Searchpath contains a path 2015-10-22 11:51:03 -04:00
c07ea1bc73 Expose protected PBD::Searchpath API
I prefer to use these as they are more explicit than using the overloaded
operators.
2015-10-22 11:51:03 -04:00
6ca3a1593e add commentary and clean up blank lines 2015-10-21 22:31:35 -04:00
ea95bef27b variable name change: percent is 0..100, 0..1.0 is a fraction 2015-10-21 08:09:40 -04:00
6e7ca06f63 ensure that mutator function for CONFIG_VARIABLE_SPECIAL is used when assigning initial value during construction 2015-10-21 07:53:26 -04:00
740c4dd134 possible fix for invalid cleanup space calc on win32. 2015-10-20 15:50:00 +02:00
af3ffc8610 NOOP, re-indent 2015-10-20 15:49:59 +02:00
b00d75adf6 add safety checking when setting up DEBUG bits 2015-10-15 08:59:11 -04:00
ce03b02a79 in a CrossThread object, ensure destruction of the channel and source used on Posix
The source holds a reference to the channel; both must be unref'ed/destroyed in order to
fully clean up resources
2015-10-08 21:55:37 -04:00
14932d1b86 allow to load huge VST plugin states -fixes #6623
by default libxml has a XML_MAX_TEXT_LENGTH of 10M
with base64 encoding that allows at most 2.5MB state.

set XML_PARSE_HUGE to read large sessions
2015-10-07 14:36:32 +02:00
2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4178db5f63 globally remove all trailing whitespace from .cpp and .hpp files missed by previous commit 2015-10-04 15:11:15 -04:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
e344d379d2 update semantics of PBD::remove_directory()
Remove the directory recursively including itself. The function
is used in two places only:

* LV2Plugin::add_state() -- no change, remove tmp. state
* Session::save_as()  -- on error, remove target

In both cases removing the folder itself is correct.
2015-09-27 12:44:54 +02:00
f5b3ad18cf PBD::Debug to stdout
fixes debug output on windows. std::cerr is lost,
only std::cout, printf() and fprintf(stderr, ..) work.
2015-09-21 23:08:45 +02:00
2e9e8d3b33 Fix windows test to also pass under wine
It looks as if the default timer resolution for applications running under wine
is different than Windows so just test that the minimum timer resolution is
below a certain amount rather than checking before and after calling
timeBeginPeriod
2015-09-19 10:59:39 +10:00
d609217c55 Make sure that those recently moved functions will be visible if they're needed outside of libpbd 2015-09-18 10:27:27 +01:00
44ea59495c MSVC projects - accommodate some modules that recently got moved or removed
(mostly these got moved out of the PortAudio backend and into libpbd)
2015-09-18 10:25:11 +01:00
c1d6a2fd92 add string_compose argument specializations so that empty std::string and empty C strings are handled as intended 2015-09-17 17:16:23 -04:00
e44212321e Add test to libpbd to check PBD::touch_file and pbd/gstdio_compat.h
GStatBuf is not usable on 32 bit Windows without the redefinition in
pbd/gstdio_compat.h so add a test to check for the correct behavior of
g_stat and g_utime on all platforms now that the issue is fixed.
2015-09-17 23:26:38 +10:00
95b55c7346 fix g_lstat() 2015-09-17 15:01:26 +02:00
7ac691ec82 use pbd's gstdio compatibility wrapper 2015-09-17 14:37:57 +02:00
c90bab4d4e add glib/stdio compat wrapper for mingw64-w32 2015-09-17 14:36:47 +02:00
119e56e7eb Add PBD::QPC::initialize to initialize timer and call it from PBD::init
Check timer for invalid frequency
Precalculate timer tick rate to save a few instructions
Don't use static variables inside functions to avoid checking for initialization
Use static functions inside anonymous namespace for internal linkage
2015-09-16 23:59:38 +10:00
9bd893a6a2 Make sure the QPC frequency is cached so the timer can be used 2015-09-16 22:50:37 +10:00
35a1c3b6a5 Put functions inside anonymous namespace and use static for internal linkage 2015-09-16 11:22:17 +10:00
5d9144173b Mark strings intended for developers/debugging as not for translation 2015-09-16 11:22:17 +10:00
d007fc05b1 De/Initialize MMCSS on windows in PBD::init/cleanup instead of in PA Backend 2015-09-16 11:22:16 +10:00
091c4ed3a7 Move Windows MMCSS related utility functions into libpbd 2015-09-16 11:22:16 +10:00
76a0c823ca Add PBD::DebugBit for debugging thread related debugging output 2015-09-16 11:22:16 +10:00
f58e3abdbe Perform QPC timer check on windows in PBD::init when PBD_TEST_TIMERS env is defined 2015-09-16 11:22:16 +10:00
f4cb4e479d Rename PBD::QPC::get_timer_valid to check_timer_valid and perform timer test
I'm not sure if this test is going to be effective as I don't have hardware to
test on at the moment. As noted in the documentation, Windows XP should be the
only OS where QPC uses a timer source that is non-monotonic(multi-core with
non-syncronized TSC).
2015-09-16 11:22:16 +10:00
cd05d46c00 Add windows specific test for pbd/windows_timer_utils.h API 2015-09-16 11:22:16 +10:00
a88b2da6a9 Fix PBD::MMTIMER::reset_resolution and add some documentation
timeEndPeriod must be called with the same timer resolution value used in
timeBeginPeriod. When the process exits the timer resolution is restored anyway
so this is not very important.
2015-09-16 11:22:16 +10:00