355183f1ab
partially revert some of the recent work on tempo to reflect new understanding of the problem. behaviour is now believed to be totally correct but awaiting a bit more testing
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11171 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-06 16:39:40 +00:00
bdb15f9422
fix some more crashes with tempo map manipulations
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11170 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 22:36:58 +00:00
c5205fe49f
upgrade audiounit support to use the new tempomap API
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11169 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 21:26:54 +00:00
9829a69549
fix over-zealous optimization in tempo map, caused crash
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11168 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 21:24:26 +00:00
862299120c
remove debugging output
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11167 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 17:42:48 +00:00
3678b7c962
make extending the tempo map O(N) in the section to be filled in, rather than O(N) in the overall length of the map, and clean up some other details
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11166 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 17:31:24 +00:00
63f77717d7
remove un-needed TempoMap::frame_time_rt()
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11165 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 15:56:14 +00:00
e0b694f630
possibly fix deadlocking issues with tempo map by rearranging code and adding RT variants for a couple of functions that would normally try to rebuild the map when necessary; instead the variants throw an exception and the RT code that called them tries to do something reasonable
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11164 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-05 05:05:31 +00:00
Carl Hetherington
4e4306d125
Use Request::Pause rather than Request::Wait for
...
Butler::wait_until_finished. Otherwise the following bad
thing happens:
1. The export code wants to call some Butler functions, so it calls
calls Butler::wait_until_finished.
2. This (used to) write Request::Wake into the butler's request pipe.
3. Imagine that when this happens, the butler is already doing stuff.
4. Meanwhile, Butler::wait_until_finished is waiting on Butler::paused.
5. Some time later, the butler finishes its other stuff.
6. Then it signals "paused".
7. This causes Butler::wait_until_finished to return, so the export code
thinks everything's ok and starts calling butler functions.
8. Then the butler sees the Request::Wake, wakes up, and by unhappy coincidence
ends up calling read on the same diskstream that the export code has just called.
This causes corruption of the Diskstream buffers, resulting in mantis #4283 .
Using Request::Pause instead means that the butler will still wake in step #8 ,
but should_run will be false, so nothing much will happen and the export code
will be unimpeded.
For future reference, this bug was easiest to track down after adding a debugging
mutex to AudioDiskstream and then try-locking it in AudioDiskstream::_do_refill;
as far as I can see, _do_refill should never be called by two threads at the
git-svn-id: svn://localhost/ardour2/branches/3.0@11163 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 21:07:04 +00:00
c80649d913
restore correct behaviour of undo/redo for tempo map drags
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11162 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 20:40:06 +00:00
d48fd2a679
try to clean up locking issues with TempoMap
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11161 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 20:29:56 +00:00
ac19bedc3d
tweak constants that affect whether/where trimming cursors are shown for MIDI notes, to avoid making it so hard to drag relatively small notes
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11160 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 20:29:34 +00:00
f61a0d892c
fix error in framepos_{plus,minus}_bbt() which miscounted beats while stepping through bars - stops dragged MIDI notes from ending up in the wrong place, and more
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11159 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 18:48:32 +00:00
2858b0474e
fix (?) tricky locking issues in the tempo map by adding a second lock and independently locking the metrics and the map itself
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11157 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 17:55:42 +00:00
Carl Hetherington
b9a9d8d047
Use a few shared_ptrs to make things slightly neater.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11156 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 13:56:09 +00:00
365a8f7f14
implement TempoMap::framepos_minus_beats() using new bar|beat map structure, and fix accuracy of TempoMap::framepos_plus_bbt()
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11155 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 03:27:55 +00:00
b1a33855ce
use BBTPoint::is_bar() rather than ::beat == 1 ; implement TempoMap::framepos_plus_{beats,bbt}() with new map structure (not totally finished or accurate yet); prevent crash when dragging a marker to replace the initial tempo/meter markers
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11154 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 02:49:01 +00:00
Carl Hetherington
10d9eaf0bd
Remove unused variables.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11153 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 21:13:16 +00:00
Carl Hetherington
2bea7aaca5
Maybe fix initial run of tests with sources.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11152 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 21:13:11 +00:00
Carl Hetherington
783f31816c
Happy New Year
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11151 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 21:13:05 +00:00
Carl Hetherington
58d8b7f42f
Add valgrind option for tests.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11150 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 21:12:58 +00:00
Carl Hetherington
469d3b8fd7
Add TestNeedingPlaylistAndRegions
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11149 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 21:12:53 +00:00
43441aa924
remove duplicated test conditions
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11148 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 19:20:54 +00:00
bc003a539b
save 4 bytes per Bar|Beat point in the tempo map
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11147 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 19:03:13 +00:00
2a200bdc0e
return two iterators into the Bars|Beats list of the tempo map rather than making a copy; use iterators in the GUI
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11146 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 18:43:58 +00:00
0d4658e0af
more tempo fixes, including handling multiple metrics at the same place, and fixing round_to_beat_subdivision(). almost done now...
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11145 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 17:59:47 +00:00
19126ddc09
fix incorrect tempo test
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11144 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 17:58:46 +00:00
ce5de59c77
remove body of no-longer-relevant tempo-related test
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11143 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 17:36:40 +00:00
d6ff0e35d8
add support for -D foobar when running tests
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11142 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 17:36:17 +00:00
Carl Hetherington
431a30b3a9
Add notes on running unit tests.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11141 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 16:10:34 +00:00
Carl Hetherington
b6438ed1f6
Add TestNeedingSession and add missing tempo_test.h
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11140 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 16:05:25 +00:00
Carl Hetherington
dd57700445
New test.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11139 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:51 +00:00
Carl Hetherington
b0577f260c
More test friends.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11138 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:22 +00:00
Carl Hetherington
d345d44688
Reverse parameters to CPPUNIT_ASSERT_EQUAL so its assert
...
messages read the right way round.
git-svn-id: svn://localhost/ardour2/branches/3.0@11137 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:17 +00:00
Carl Hetherington
e11c96019a
Fix erroneous test.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11136 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:12 +00:00
Carl Hetherington
279d0ff34b
Remove unused variables.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11135 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:07 +00:00
Carl Hetherington
c9ed7d2402
Fix test build.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11134 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:32:01 +00:00
Carl Hetherington
c252d65f56
Reverse parameters to CPPUNIT_ASSERT_EQUAL so its assert
...
messages read the right way round.
git-svn-id: svn://localhost/ardour2/branches/3.0@11133 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-03 14:31:55 +00:00
Carl Hetherington
8be724db1b
Use the correct flag for DAZ and default to using FTZ and DAZ denormal protection.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11132 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-02 23:52:28 +00:00
f135947606
intermediate commit as all tempo/meter stuff starts to walk the precompute Bars|Beats list. Still have ::round_to_beat_subdivision() to fix. haven't really done any thorough testing at this point, but basic stuff seems OK
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11131 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-02 23:32:33 +00:00
69c7dac1a1
new approach to tempo/meter: compute and store the entire map (every bar|beat point), thus enabling us to use the same computation to set the BBT points AND the metric markers (tempo + meter) on the audio timeline. It is known that snapping to the BBT grid doesn't work correctly right now, but this probably caused by the separate code in TempoMap::round_to_type() and i'll dig into that tomorrow. Note that the Bar|beat point list is evaluated "lazily" - we'll never store more than anyone actually needs to display or know, other than 1 minute's worth starting from frame zero
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11129 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-02 04:04:14 +00:00
Carl Hetherington
084fc8b327
Slightly improve proxying of events by crossfade views; doesn't really have any positive effect, unfortunately.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11127 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-31 13:25:56 +00:00
Carl Hetherington
6c0224c987
Emit notify_layering_changed() more often; especially when we remove the only region on a top layer, and the StreamView needs to sort itself out.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11126 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-31 13:25:50 +00:00
Carl Hetherington
9c8a27c664
Don't round control list events when x-scaling them; prevents large loss of accuracy with xfades when they are scaled to be small and then expanded again ( #4602 ).
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11125 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-31 13:25:29 +00:00
Carl Hetherington
54ff6901a9
Restore update of coverage frames on playlist contents changed, which is needed for trim.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11124 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-31 00:19:08 +00:00
Carl Hetherington
b93254f275
Anywhere that deletes regions needs to use a rdiff() on the playlist
...
for the undo history, so that changes to regions' layering_index
get stored in the undo record. Make Playlist::update use add_region_internal
so that undone regions don't have their layering_index corrupted.
Setup layering indices on relayer() so that deletion of regions
causes an update.
git-svn-id: svn://localhost/ardour2/branches/3.0@11123 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 23:41:17 +00:00
Carl Hetherington
0be530821c
Debug code.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11122 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 23:41:11 +00:00
Carl Hetherington
b5b921d820
Make coverage frames work slightly better; jury is still out on whether they are any use, I think.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11121 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 21:56:11 +00:00
Carl Hetherington
dd53e7284a
Set up layering_index immediately on an explicit layer, so that undo
...
works properly. Stop the layer being a stateful property, as it is
always derived from layering_index, unambigiously, by relayer().
git-svn-id: svn://localhost/ardour2/branches/3.0@11120 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 20:05:48 +00:00
Carl Hetherington
2c23ff8ceb
Add assert.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@11119 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 20:05:40 +00:00