Commit graph

7832 commits

Author SHA1 Message Date
Colin Fletcher
cb3961d953 Add a test for the constrained cubic interpolation of Evoral::Curve
Add a test, based on the worked example in www.korf.co.uk/spline.pdf, for
the constrained cubic spline interpolation.

The delta values for the float comparisons are rather arbitrary, I'm sorry
to say: they're basically chosen so that everything passes.
2015-02-13 12:25:51 +00:00
Ben Loftis
bd6ef95989 add accessor methods for single_exposure 2015-02-12 11:35:35 -06:00
Ben Loftis
b8ec035b24 _single_exposure is now a member variable for each GtkCanvas.
Gtk coalesces multiple exposes into a single combined rect.
If _single_exposure is disabled, we break apart the individual expose rects for the canvas rendering.
2015-02-12 11:35:35 -06:00
Tim Mayberry
180b705643 Fix whitespace in pbd/debug.h 2015-02-12 22:10:51 +10:00
Tim Mayberry
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
Tim Mayberry
9a7ae1ad99 Add some more test assertions so that tests fail when they should 2015-02-12 20:06:47 +10:00
Paul Davis
0f0aebf26b remove naive attempt to avoid drawing first vertical pixel line of Canvas::WaveView
And add commented out attempt at more subtle attempt to get it right
2015-02-11 21:59:38 -05:00
Paul Davis
a992a2e6e0 simplify Canvas::Rectangle rendering to avoid unnecessary nonsense, and remove TimeRectangle 2015-02-11 21:59:38 -05:00
Paul Davis
2a5921ecf1 Canvas::Rect::contains() should treat its right/left coordinates as exclusive 2015-02-11 21:59:38 -05:00
Robin Gareus
e8c24f1efd fix midi-capture filter
diskstream reads directly from port, Route
use prefilled buffer-set.
2015-02-12 01:05:16 +01:00
Paul Davis
eddcd7128f infrastructure to allow tracing of all MIDI ports 2015-02-10 19:48:47 -05:00
Paul Davis
34779ee81e add a sort-of hack to allow us to avoid drawing the first pixel of a waveview when necessary 2015-02-10 19:48:47 -05:00
Ben Loftis
6cad07fc11 fix boot message always sticking on the last loaded route; it looked like an error 2015-02-10 14:43:16 -06:00
Paul Davis
c679d616f6 correct drawing of rectangle borders.
They need to use fractional coordinates, and the border position needed
generalizing for other border widths. See verbose comment for details
2015-02-09 16:41:28 -05:00
Paul Davis
736038556f canvas items must be able to use fractional positions when rendering.
This is required to be able to draw precise single pixel lines, as described
in the Cairo FAQ
2015-02-09 16:40:10 -05:00
Paul Davis
6dbc0c0919 put function into namespace 2015-02-09 14:46:20 -05:00
David Robillard
429da16b60 Fix sending out of bounds events to LV2 plugins. 2015-02-09 13:45:37 -05: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
Ben Loftis
ae09d7132d fix 192k rate 2015-02-06 13:57:22 -06:00
Paul Davis
63a1b56560 fix (and comment) on subtle bug with audio file data width function 2015-02-06 10:33:01 -05: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
Paul Davis
78e245d0b5 do not attempt to call an empty/null boost functor in clear_events() 2015-02-05 18:03:40 -05:00
Paul Davis
c76523aeaa fix bad fix for cherry-pick conflict 2015-02-05 16:49:14 -05:00
Paul Davis
e8b6f852f6 make two obvously const methods actually be const 2015-02-05 16:36:09 -05:00
Paul Davis
e72a4ec850 modify behaviour of session when updating skips to use new SessionEvent API
Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
2015-02-05 16:35:56 -05:00
Paul Davis
ec9c6a58e2 add SessionEvent::Action to libs/ardour enums registration 2015-02-05 16:32:33 -05:00
Paul Davis
6790f8342a expand SessionEvent API to allow ::clear_events() to work correctly.
clear_events() must run in realtime context, which is likely to be asynchronous
with respect to the thread that calls it. So allow caller to pass in a functor
that will be executed (also in realtime context) after the clear is done.

Additionally, allow for a cross-thread callback to the event loop/thread which
initiated/allocated the clear event request so that it can flush its own pending
loop. This part probably isn't necessary but doesn't hurt and is a useful model.
The event would be placed back in the free list at the next event allocation
by the calling thread anyway.
2015-02-05 16:32:21 -05:00
Paul Davis
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
Paul Davis
7152634104 set name of GUI event loop thread 2015-02-05 16:31:59 -05:00
nick_m
63935a86a4 Rework previous commit to avoid extra property lookup (fwiw). 2015-02-06 01:09:04 +11:00
nick_m
2d8b7c352b Make sure we have the property rather than the value of patch change id.
(don't crash whenever someone adds a patch change and reloads the session).
2015-02-06 00:53:12 +11:00
nick_m
ff13ac8b4f Clean up Session's _current_trans when aborting a drag. 2015-02-05 23:32:57 +11:00
Ben Loftis
b4a0136155 tweak to help with uncoalesced renders 2015-02-03 17:35:37 -06:00
Paul Davis
9fab39358a render canvas using the GDK region rather than the GDK area.
The region is the un-coalesced set of rectangles that were requested for redraw. The area
is the coalesced single rectangle. In the worst cases, the coalesced rectangle could span
the entire window even though just two pixels in opposite corners were to be redrawn.

There is a problem with the verbose cursor as it is dragged across MIDI tracks. TO BE
FIXED.
2015-02-03 15:38:14 -05:00
John Emmas
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
John Emmas
e874bc0be1 If 'force' is TRUE (when using 'Location::set_start()' or 'Location::set_end()') make sure we do actually force the value to get set.
This gets us around a problem when converting a session from the old (Ardour2) format - where the Session Range (start) value was getting incorrectly set if we hadn't already set the end value.
2015-01-30 14:55:23 +00:00
Robin Gareus
0018ee2b02 fix “invalid use of incomplete type jack_client_t”
introduced in 66eef25
2015-01-30 11:02:07 +01:00
Robin Gareus
fe0254344f clarify sync-lock and disable it by default. 2015-01-30 10:43:56 +01:00
Robin Gareus
f15236b9a0 amend 070818f 2015-01-30 10:43:56 +01:00
Paul Davis
bdfe32c086 stop transport when process_routes fails, even when using the parallel graph execution model 2015-01-29 22:00:05 -05:00
Paul Davis
de8a8272bc fix incorrect return value from sndfile_data_width() 2015-01-29 21:59:55 -05:00
Robin Gareus
070818f884 take down backend specific threads with backend 2015-01-30 01:28:52 +01:00
Robin Gareus
66eef257d8 fix jack thread joining
at the time the graph gets around to takes down 
client threads, the jack-backend’s jack_client has been reset.
But never mind: libjack does not care about it, anyway.
2015-01-30 01:28:52 +01:00
Paul Davis
55ba5208b9 return to old default disk chunk read size 2015-01-29 18:49:04 -05:00
Robin Gareus
def2147b4c fix -Wreorder in 6377fe89 2015-01-29 02:28:25 +01:00
Robin Gareus
c11a7a1bd7 allow bundling of lv2core
Don’t statically initiate the lv2 world, use explicit call after 
scanning bundles.


lilv_world_load_specifications() and lilv_world_load_plugin_classes()
are only ever called after lilv_world_load_all(), so we postpone
the call to it.
2015-01-29 02:13:33 +01:00
Robin Gareus
cf8e7bc135 ALSA-backend separate report for error and x-run 2015-01-28 13:47:24 +01:00
Robin Gareus
397ce4ccc7 ALSA-Backend prefer ppoll() 2015-01-28 13:47:24 +01:00
Robin Gareus
de85bfd857 fix #6117 - fader prelight 2015-01-28 02:22:52 +01:00
Robin Gareus
36bbd14113 towards fixing #5711
Don’t call ::output() [here: SilenceTrimmer::process()] 
with no data to process. 

If (position + N * period-size) % chunksize == 0;
frames_left == 0 before the last call to ::output().
chunker.h:60 keeps the ProcessContext<T>::EndOfInput
flag and the SilenceTrimmer will already have done ‘in_end’ processing.
2015-01-27 23:13:55 +01:00