13
0
Commit Graph

1047 Commits

Author SHA1 Message Date
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
62f75b8b16 Remove glib timer test from pbd testsuite
There are no test assertions and it takes a long time to execute the test so
just leave it disabled for now.
2015-09-16 11:22:16 +10:00
3f5c01e4eb Move Windows timer utility functions from PA backend into libpbd 2015-09-16 11:22:16 +10:00
8e8f8d92c2 allow to run unit-test under wine from srcdir. 2015-09-13 15:30:00 +02:00
eb998b3264 plug some memory leaks in libs 2015-09-12 20:05:25 +02:00
a5e3371b80 Event Pool usage debugging, see also 6ade16b38 2015-09-12 02:18:38 +02:00
ebfd0782e1 add missing include 2015-09-05 11:36:16 +02:00
b66bf67030 fix bitwise enum parsing 2015-09-05 00:00:16 +02:00
a272c50597 Move AudioBackend related debug bits into libardour
I put these in libpbd as that is where the debug bits are for the Waves backend
but I think it makes more sense for them to be in libardour as that is where
the AudioBackend class is defined

I left the Waves debug bits in libpbd for now.
2015-09-02 12:07:14 +10:00
463cf1cf9c Add PBD::DebugBit for debugging issues with undo history 2015-08-19 13:56:06 +10:00
a2fbce0e7f Change return type and name of get_win_special_folder
Rename it get_win_special_folder_path to indicate what it is returning

Move documentation for the function into the header and use doxygen style
comments.

Fixes a couple of memory leaks in ArdourVideoToolPaths class although it looks
as if there are more.
2015-08-18 15:33:03 +10:00
ea32eecf3d Fix Searchpath::operator+ to return by value rather than reference and not modify *this
ladspa_search_path was the only function using this API and it is unaffected by
the change
2015-08-18 15:09:44 +10:00
1d2938b162 Add '_xgetbv()' for MSVC-9 and earlier 2015-08-16 13:14:54 +01:00
f77a409b0c tweaks for AVX detection 2015-08-14 08:53:06 -04:00
5a304e9e33 fix PPC builds 2015-08-12 19:16:01 +02:00
c86b82aa8a comment tweak to show that the __cpuid() intrinsic belongs to MSVC and mingw 2015-08-11 23:45:52 -04:00
94b6e7ffe4 fix mingw compilation 2015-08-12 05:25:29 +02:00
b6f9bbeb2f can't use xgetbv instruction with apple gcc under OS X Lion 2015-08-11 23:06:47 -04:00
41ccfee7a4 clean up FPU code with some ideas from Chromium and the web 2015-08-11 23:00:13 -04:00
bb399c8787 fix stupid logic error in testing separate bits required for AVX support 2015-08-11 20:18:38 -04:00
bb5c969ac0 improved solution for xgetbv() on windows and linux with all compilers 2015-08-11 17:45:41 -04:00
53bc2ba2c1 #ifdef out AVX detection on APPLE 2015-08-11 17:30:33 -04:00
c0ad97c179 add required test of OS support for AVX register use 2015-08-11 17:23:11 -04:00
4079855507 add test for CPU/FPU AVX capabilities 2015-08-11 16:36:46 -04:00
9e918563df remove cruft 2015-08-07 21:10:47 +02:00
e057b873b5 amend e09c620; now with semicolon :) 2015-08-03 23:09:51 +02:00
e09c62052d fix backslashes in quotes (windows), fixes VST scan 2015-08-03 23:06:08 +02:00
e258c827e2 WinMME based midi input/output for portaudio backend
TODO:

Use MMCSS to elevate thread priorities
Enable/test and fix SYSEX related code
2015-07-31 09:59:54 +10:00
009a06a773 Move ARDOUR::touch_file to pbd/file_utils.h 2015-07-26 12:15:19 +10:00
44cba53219 Revert "When saving a session (in a non-English locale) make sure that we use a locale-specific path"
This reverts commit cf5a8651d8.
2015-07-25 23:14:50 +10:00
b2ff1e1734 Add unit test to check that libxml2 expects utf-8 encoded file paths on Windows 2015-07-25 23:14:50 +10:00
226087d06a Only create one test output directory in file copy test
Rather than one directory for each file
2015-07-25 23:14:50 +10:00
dfe2ac1d38 Add unit test to assert that using locale_from_utf8/::open will fail for some file paths on Windows 2015-07-25 23:14:45 +10:00
cf5a8651d8 When saving a session (in a non-English locale) make sure that we use a locale-specific path 2015-07-23 17:55:13 +01:00
7742d07b3a fix compilation w/o posix_malign 2015-07-19 23:24:19 +02:00
2f10fb5b96 OSX 10.5/PPC compat
posix_memalign is 10.6 or later
2015-07-19 23:02:24 +02:00
e29fd9a2fd Minor changes to ensure that MSVC knows about 'CaptureStackBackTrace()' 2015-07-18 15:22:43 +01:00
f1aa1a0a11 fix headers for case-sensitive FS. 2015-06-30 08:18:52 +02:00
3392c05779 volatile should not be used to describe non-hardware lvalues, and fix const cast warning (which removes need for mutable) 2015-06-29 14:18:16 -04:00
2e29e7ee62 increase debug bitset size to accomodate additional debug bits imported from Tracks 2015-06-29 14:18:15 -04:00
943394a49a add PBD::DEBUG bits for WavesAudio and WavesMIDI 2015-06-29 14:18:14 -04:00
Greg Zharun
320da29922 [Summary] AudioPort buffer does not need 64 byte alignment which cache_aligned_malloc provides.
Added new function which accepts argument to specify required alignment.

AudioPort buffer requires 32 byte alignment

[Review Required] YPosdnyakov
2015-06-29 14:18:14 -04:00
480f1e4082 noop: fix indentation/whitespace 2015-06-29 14:18:14 -04:00
6410aa896f Added optimized AVX function for sample processing
Added AVX versions of existing 5 SSE functions. Added 6th AVX function to copy vectors which is 1.5 times faster then memcpy.
Data consistency and validness  is fully tested after processing with new AVX functions on aligned and non aligned buffers.
2015-06-29 14:18:13 -04:00
7fae6bcd87 copy all XCode project files from Tracks.
Rationale: the Waves team maintains the XCode project files, the Ardour crew doesn't. Thus, the Waves'
version is more canonical
2015-06-29 14:18:10 -04:00
Greg Zharun
92e4f227de [Summary] Added correct memory alignment for Windows in ../pbd/malign.h
[Reviewed by] YPozdnyakov
2015-06-29 14:16:43 -04:00
GZharun
ef59fbffa1 [Summary] Added possibility to identify IO thread which does not have required resources initialized during process callback handling
Conflicts:
	libs/ardour/ardour/audioengine.h
	libs/backends/wavesaudio/waves_audiobackend.cc
	libs/pbd/pbd/pool.h
2015-06-29 14:16:42 -04:00
017e580c9f add stacktrace() support for Windows (Grygorii Zharun) 2015-06-29 14:16:42 -04:00
cc543280d9 We were 2 more debug "bits" away from overflow, so recast PBD::DEBUG mechanism away from a 64bit integer and toward std::bitset.
Clean up a few minor related PBD::DEBUG issues along the way
2015-06-12 18:14:09 -04:00
801af5df9e Add the new (UINTSDEFINED) preprocessor directive to all out MSVC projects (just to be on the safe side) 2015-06-09 13:18:42 +01:00
2b294f0b43 add a sanity check 2015-04-30 21:15:35 +02:00
a3209b9b91 Correctly dereference 'fxbuf' when building with MSVC 2015-04-30 18:17:24 +01:00
fe3aafec1c When testing for x86 / x64 architecture, don't forget the symbols that MSVC can understand 2015-04-30 18:17:23 +01:00
d75b27f6dc allow to compile PBD::Signals w/o connection debugging 2015-04-27 17:19:58 +02:00
9687c756a6 const iterators 2015-04-27 17:19:57 +02:00
27dac7c31f Expose “/route/trim” midi binding. 2015-04-26 19:07:45 +02:00
6cb742c289 windows 32bit asm/fpu support.
This still leaves cache_aligned_malloc() in
libs/pbd/malign.cc pending _aligned_free (windows crashes when using
free() on memory allocated with _aligned_malloc()).

So far however there seems to be no issue with default malloc
for audio+midi buffers on win32…
2015-04-24 02:43:52 +02:00
63b3d06fd7 add missing regexp support to pbd/wscript 2015-04-24 00:41:23 +02:00
91b9d6c063 separate build host & target (fix win32 asm) 2015-04-24 00:33:34 +02:00
27b64e481a Remove a 'no longer needed' source from our MSVC project (libpbd)
(FPU functionality was recently merged into a single source file)
2015-04-22 10:44:23 +01:00
e015c57663 <intrin.h> is for windows only 2015-04-21 12:31:02 -04:00
e3156c2cc4 add required header for windows compile of FPU code 2015-04-21 12:25:21 -04:00
9241f58188 fix build of FPU code on OS X by reverting to use of _LP64 to identify 32/64 bit situation 2015-04-21 12:13:00 -04:00
a5d7e8446b merge all mingw and msvc specific code for FPU information into libs/pbd/fpu.cc and remove msvc-specific version 2015-04-21 11:39:31 -04:00
Greg Zharun
8af992c449 [Summary] Added SSE sound processing functions support for Windows. Version 1.
Conflicts:
	wscript
2015-04-21 10:49:00 -04:00
5188f02cfe hide issues with g_close() not being available in somewhat older versions of glib 2015-03-16 13:34:35 -05:00
8ff477ab1a add PBD::toggle_file_existence() 2015-03-16 13:00:28 -05:00
831f2989ac Revert commit 635578b3 relating to pthread debugging
This breaks the build for windows builds that don't use the pthreads_win32
library. Using the opaque pthread_t type like this is probably not a great
idea. Using PBD::pthread_name is another option that I've used elsewhere
that seems more useful.
2015-03-12 23:05:31 +10:00
0f8da2d4cd Define DEBUG_THREAD_SELF when debug is enabled 2015-03-12 23:04:25 +10:00
fe85575a12 fix “no per-thread pool” abort
For some backends the process thread can change (e.g.
switch coreaudio headphone + internal speakers)

If there are existing x-thread event calls this can lead to
the following situation:

1) SessionEvent::operator new
2) audioengine process thread change
3) SessionEvent::operator delete  -> crash, wrong thread

SessionEvent::operator delete can safely push the event back to
the pool for later cleanup..
2015-03-11 00:25:10 +01:00
523f703b3b Move 'poor_mans_glob()' into libpbd 2015-03-09 18:32:55 +00:00
3b57d246d7 Reduce run time/output of PBD::Timer unit test 2015-03-08 22:46:38 +10:00
f694b867c1 Fix PBD::copy_file on windows to work with non-ascii paths
This breakage was indicated by the filesystem unit tests.
2015-03-08 22:46:26 +10:00
cf7d5dbc2d recursive regexp file search. 2015-03-03 19:54:27 +01:00
d7727a77e0 Xthread: blocking read + non-blocking write mode.
Needed for switching the butler to use Crossthreads.
2015-03-01 20:49:55 +01:00
32e23db665 In libpbd the sources 'localeguard.cc/.h' and 'locale_guard.cc/.h' are essentially identical now - so let's remove the former pair which were only ever needed when building with MSVC
(should hopefully avoid future confusion !!)
2015-02-28 12:59:00 +00:00
933e9c2919 Fix unnecessary const violation. 2015-02-27 14:21:45 -05:00
deb4687d5d fix testPathIsWithin unit-test:
* use absolute path
* fix copy/paste typo: bar->jim for symlink test
2015-02-14 05:50:40 +01:00
180b705643 Fix whitespace in pbd/debug.h 2015-02-12 22:10:51 +10:00
0550ec31bc Add local PwdReset class to reset pwd in event of test failure
This fixes subsequent tests that rely on pwd but not PBD::path_is_within
breakage caused by commit 2689848e
2015-02-12 20:06:47 +10:00
9a7ae1ad99 Add some more test assertions so that tests fail when they should 2015-02-12 20:06:47 +10:00
nick_m
b1dafe9a31 Properly deallocate memory when clearing selection_op_history and
before XMLNode*s.
Improve some comments.
2015-02-07 23:33:09 +11:00
nick_m
6b9415aedb Make undo/redo work for:
undo (n) where n > 1
redo (m) where m < n
new transaction.

Previously the redo list was left untouched.
This would lead to utter nonsense in the redo list.

AFAICT this never worked.
2015-02-06 21:54:27 +11:00
e8b6f852f6 make two obvously const methods actually be const 2015-02-05 16:36:09 -05:00
4010884a5b expand PBD::Pool API and add additional DEBUG_TRACE output.
Expanded API splits apart some CrossThreadPool functionality, and provides
access to current pool status information (available(), total(), used(), pending_size())
2015-02-05 16:32:10 -05:00
2689848ed7 Add an extra test to prevent 'PBD::path_is_within()' from looping infinitely on Windows
The infinite loop would happen if the 2 supplied paths were on different Windows drives - for example if one was on drive C:\ and the other on drive E:\

I don't think this new test will be detrimental to the other platforms but if it is, we could easily separate it out with a '#ifdef PLATFORM_WINDOWS' directive.
2015-02-03 11:57:38 +00:00
d2fa2450aa use C locale, because POSIX locale is not supported on windows, and operation is undefined. C works on all platforms 2015-01-19 07:29:25 -06:00
8900d7d9ea On Windows, #include <shellapi.h> so we can use ShellExecute() 2015-01-18 18:52:24 +00:00
a994dbaa0c fix open_uri for windows 2015-01-18 11:16:28 -06:00
d3227ac0d0 Dramatically improve windows session-save-time by avoiding recursive calls to set_locale. 2015-01-18 09:43:21 -06:00
f598105966 Add support for the C99 function 'log2()' which is newly needed by 'gtk2_ardour/tempo_lines.cc' (but isn't available from MSVC).
These changes are MSVC specific and shouldn't affect the other builds.

(incidentally, libpbd already offers a function called 'fast_log2()'. Not sure if that could have been used instead...)
2015-01-10 11:56:24 +00:00
0367aa5825 remove cruft (old unused pre-git version files) 2015-01-09 06:11:57 +01:00
7f486e146d Accommodate some newly introduced source files for building with MSVC (libpbd) 2015-01-02 15:31:39 +00:00
d606a37204 Add PBD debug macros for recording timing data 2015-01-01 19:04:14 +07:00
1da30faf7f Add tests that show the timing differences between the Glib/mm based timeouts
This shows that PBD::Timer is pretty much identical in terms of timing and CPU
usage as Glib TimeoutSources.

They also show the differences on Windows when setting the minimum Multimedia Timer
resolution using timeBeginPeriod
2015-01-01 19:04:09 +07:00
b959b3fb87 Add PBD::Timer/StandardTimer/BlinkTimer classes for convenient timeouts 2015-01-01 18:59:01 +07:00
770c190ccf Add Timing, TimingData and Timed classes for time measurement to pbd/timing.h 2015-01-01 18:58:57 +07:00
46d08595ff class 'PBD::Configuration' doesn't actually get exported from libpbd - so make sure we don't decorate it with LIBPBD_API 2014-12-26 09:16:58 +00:00
8eba7c5c0a Add some newly introduced source files to our MSVC project (libpbd) 2014-12-26 09:15:17 +00:00
f5f89d8c7e fix for case-sensitive FS - aa80515f3 2014-12-23 23:43:25 +01:00
Greg Zharun
aa80515f3f [Summary] Fixed audio export on Windows. Added support of windows platform for the function that calculated hardware concurrency.
Because there was no implementation for this function on windows it used to return 0. This meant that no thread was created to process the data.
2014-12-23 12:55:35 -05:00