Commit graph

9278 commits

Author SHA1 Message Date
Tim Mayberry
091c4ed3a7 Move Windows MMCSS related utility functions into libpbd 2015-09-16 11:22:16 +10:00
Tim Mayberry
76a0c823ca Add PBD::DebugBit for debugging thread related debugging output 2015-09-16 11:22:16 +10:00
Tim Mayberry
d76fe212b7 Move MMCSS related utility functions into PBD namespace
In preparation for moving to libpbd
2015-09-16 11:22:16 +10:00
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
cd05d46c00 Add windows specific test for pbd/windows_timer_utils.h API 2015-09-16 11:22:16 +10:00
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
3f5c01e4eb Move Windows timer utility functions from PA backend into libpbd 2015-09-16 11:22:16 +10:00
Tim Mayberry
4ffe8ffc0f Put Windows timer functions into PBD namespace in preparation for moving them to libpbd
Add functions for get/set the Multimedia timer resolution, although we are
really only interested in the minimum, this will facilitate testing

Put timer utility functions inside nested namespaces as they are platform
specific
2015-09-16 11:22:16 +10:00
Tim Mayberry
4330db1aa7 Update timestamp types in CycleTimer class to be signed 2015-09-16 11:22:16 +10:00
Tim Mayberry
08e18a0cb4 Move implementation for DSPLoadCalculator back into header
It can be inline now that it is much simpler
2015-09-16 11:22:16 +10:00
Tim Mayberry
f5e7aa11f9 Use same algorithm as CA and ALSA backends in DSPLoadCalculation
Stop using an averaging of the values until we can establish whether it is
really necessary.
2015-09-16 11:22:16 +10:00
Tim Mayberry
cf88bbc472 Add check for invalid timer values from the DummyBackend
Needed for systems where the Windows QPC timer returns erratic values
2015-09-16 11:22:16 +10:00
Tim Mayberry
b2a7393553 Change types in DSPLoadCalculator to signed integer after change in utils::get_microsecond 2015-09-16 11:22:16 +10:00
Tim Mayberry
a974659504 Check return value of windows timer functions and handle errors
Change return type of utils::get_microseconds to signed int and return -1 when
failing to read timer
2015-09-16 11:22:16 +10:00
Paul Davis
50a6487e77 move speed quietning code into Delivery, where it belongs.
Note: I find the -12dB reduction too much of a reduction.
2015-09-15 17:01:12 -04:00
Paul Davis
601a34521c add an Amp to Delivery, remove it from Send, make use of this in various ::run() methods
Delivery::_amp now will handle monitor-related delicks assuming the Session::config.get_use_monitor_fades() is
true.
2015-09-15 16:35:37 -04:00
Robin Gareus
fc74894def another note-off fix.
For nearly coincident note-on the sequence does not matter,
but note-off must be sent before a new note-on in strict
order (could be the same note).
2015-09-15 17:50:27 +02:00
Robin Gareus
4b20e719a8 prepare displaying peakfile queue-len 2015-09-15 17:50:27 +02:00
Paul Davis
bed85f98d1 logic rearrangement to avoid unnecessary call to Route::monitoring_state() in instrument/generator tracks 2015-09-15 09:08:38 -04:00
Paul Davis
392836a7d2 NO-OP: comment clarification 2015-09-15 09:06:16 -04:00
Paul Davis
952443a4b7 NO-OP: parenthesis and brace style 2015-09-15 09:05:08 -04:00
Paul Davis
2b1a30ca96 only apply transport declicking if requested to do so (default is to do so) 2015-09-15 09:00:50 -04:00
Paul Davis
563d9dfb65 add 2 new session properties related to implicit fades/gain ramps 2015-09-15 09:00:50 -04:00
Paul Davis
d92fceabb0 use an explicit black list of route names that require numbering.
This replaces an attempt to check port names which fails for a number of reasons.
2015-09-15 09:00:50 -04:00
Robin Gareus
04e7cfabbe prepare peak-file cleanup/recreate. 2015-09-15 14:44:05 +02:00
John Emmas
551e20b926 Remove ifstream / ofstream when accessing session template files (or creating a new session from a template file)
On Windows, the above classes don't support UTF-8 so let's get rid of them and use g_fopen / stringstream / fwrite() etc.
2015-09-15 13:17:22 +01:00
Robin Gareus
8a4bf386a4 amend previous commit. 2015-09-14 21:25:57 +02:00
Robin Gareus
9a533c925b fix short x-fade rendering 2015-09-14 21:18:56 +02:00
Robin Gareus
e63c3d028a note-off ordering - fixes #6340
Evoral::Beats::operator>() rounds to (1.0 / PPQN), hardcoded 1/1920.0.

If the time difference between two events is smaller than 1/PPQN,
Beats::operator>()  and  Beats::operator<()  produce ambiguous results.
The same pair of values is both "less than" and "greater than" depending
which operator is used.

While it's fine for some cases to ignore the order of nearly concurent
events, the std::priority_queue must be strictly ordered.
2015-09-14 04:55:01 +02:00
Robin Gareus
d83889079b hack around a bug in cppunit/mingw/windows. 2015-09-13 20:23:12 +02:00
Robin Gareus
e45db26d97 adjust precision to specified value, avoid "0". 2015-09-13 20:12:10 +02:00
Robin Gareus
8e8f8d92c2 allow to run unit-test under wine from srcdir. 2015-09-13 15:30:00 +02:00
Robin Gareus
69ff6d0507 fix mismatched delete/free 2015-09-13 04:09:24 +02:00
Tim Mayberry
6f6dde4f06 Fix typo in DSPLoadCalculator causing assertions on Windows debug builds 2015-09-13 09:01:26 +10:00
Robin Gareus
eb998b3264 plug some memory leaks in libs 2015-09-12 20:05:25 +02:00
Robin Gareus
cb6c975417 remove cruft 2015-09-12 17:55:04 +02:00
Robin Gareus
a5e3371b80 Event Pool usage debugging, see also 6ade16b38 2015-09-12 02:18:38 +02:00
Paul Davis
ec06f2c49f spelling error fixes (notably "overriden" => "overidden") from IOhannes m zmölnig 2015-09-11 09:23:43 -04:00
Robin Gareus
9fcc48d140 fail to create Monitor section if port-names are not unique
We should still prevent a user from naming a route "Monitor", but
since "Monitor" is a translatable string, this is an i18n safeguard. eg.
 - create a session with a mon-section and a track Монитор.
 - send the session to a friend in Russia.
2015-09-11 13:14:27 +02:00
Paul Davis
def273ea71 queue disk buffer overwrite when playlist layering changes.
This is a first approximation. Doing this 100% efficiently is quite hard because it would require comparing the range
currently in the disk buffer and the range impacted by the layer change. I suspect this will work fine for the
foreseeable future
2015-09-10 16:49:15 -04:00
Paul Davis
bfd66b2ea0 use PortManager::port_name_prefix_is_unique to check for new route names 2015-09-10 16:41:34 -04:00
Paul Davis
c7e755b25c add PortManager::port_name_prefix_is_unique() 2015-09-10 16:41:34 -04:00
Robin Gareus
8d54a2472d fix recent session loading.
std::stringstream::operator<< calls strlen(), but the string in the
temp buffer may not [yet] be NULL terminated.
2015-09-10 17:39:31 +02:00
Paul Davis
0ef8175b5a when removing routes, don't do potentially expensive work once for each route.
We can update solo state and tell interested parties about the removal once the actual removal is done
2015-09-10 11:35:57 -04:00
Paul Davis
cb85080ca8 fix deadlock when removing routes and using JACK1.
graph reorder callback needed an early exit if we were deleting routes, is all.
2015-09-10 11:35:57 -04:00
Robin Gareus
a86aa9e5bc use FileSource::within_session() for peak-files 2015-09-10 16:47:26 +02:00
Paul Davis
b3e8495662 remove duplicate enum registration 2015-09-10 08:15:11 -04:00
John Emmas
1a6c08dcfc Make sure that the DSPLoadCalculator class is exportable 2015-09-10 10:24:04 +01:00