13
0
Commit Graph

7754 Commits

Author SHA1 Message Date
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
ccc93c4aef centralize use of "from-context-menu" in Editor::get_preferred_edit_position(), and use it when pasting as well
git-svn-id: svn://localhost/ardour2/branches/3.0@11118 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 17:28:05 +00:00
6df1d06f8b fix logic for context-menu-mouse-dependent actions so that if the edit point is not the mouse, we still use the edit point even from the context menu. klar?
git-svn-id: svn://localhost/ardour2/branches/3.0@11117 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 16:21:10 +00:00
Carl Hetherington
42aea0b9fd Clean up comments to create_note_at, since it no longers snaps its length parameter. Move the 1 tick shortening out of the method for the same reason. Make sure that create drags make notes with a minimum length of 1 tick (#4600).
git-svn-id: svn://localhost/ardour2/branches/3.0@11116 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 13:41:16 +00:00
976e163406 make insert-patch-change from context menu use context click event for position (fixes #4570)
git-svn-id: svn://localhost/ardour2/branches/3.0@11113 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 01:50:34 +00:00
21d4eb56d4 fix default response behaviour of Gtkmm2ext::Prompter (from colinf)
git-svn-id: svn://localhost/ardour2/branches/3.0@11112 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-30 01:41:21 +00:00
Carl Hetherington
b177514930 Revert internals of the last layering-related commit, and go back a slightly-cleaned-up version of how it was before. Remove all layering modes; only option now is add-is-higher. Move-add-higher could easily be re-added if anyone uses it.
git-svn-id: svn://localhost/ardour2/branches/3.0@11111 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-29 22:14:15 +00:00
cabb76cce6 clean up comments and commented code
git-svn-id: svn://localhost/ardour2/branches/3.0@11110 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-29 21:40:20 +00:00