summaryrefslogtreecommitdiff
path: root/libs/ardour/butler.cc
AgeCommit message (Collapse)Author
2012-07-25convert from Glib:: to Glib::Threads for all thread-related APIPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-16Fairly major change to the way in which crossfades are handled;Carl Hetherington
they are now done with region fades, rather than separate objects. After this commit, Ardour will try to convert your session files to the new crossfade format, but will make a backup in your session folder first. If you have works in progress using Ardour 3 it is ***STRONGLY RECOMMENDED*** that you back up session files before updating to this commit. git-svn-id: svn://localhost/ardour2/branches/3.0@11986 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04Use Request::Pause rather than Request::Wait forCarl Hetherington
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
2011-10-24Fix awful thinko in previous commit.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10301 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24Remove unused read/write data count code.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10300 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-19more MIDI I/O debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@9901 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01Fix broken whitespace. I'd apologize for the compile times if it was my ↵David Robillard
fault :D git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-03-02increase butler event pool size dramaticallyPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@9047 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-03Remove all use of nframes_t.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@8166 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-07-05Forward port no-process-after-export fix from 2.X revs 7357 and 7361.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@7368 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-29allow zero-length SMF files on disk again; fix some gcc 4.X optimization-on ↵Paul Davis
compile warnings git-svn-id: svn://localhost/ardour2/branches/3.0@7329 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-09dynamic playback & capture buffer resizing (though transport is stopped first)Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@7250 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-09permit different sizes for audio playback & capture buffersPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@7248 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-05-13Make butler handle auditioner again. Fixes #3128.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@7100 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-21Move Diskstream ownership to Track, so that Session no longer holds lists of ↵Carl Hetherington
Diskstreams. Breaks 3.0 file format again. git-svn-id: svn://localhost/ardour2/branches/3.0@6945 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-14Prevent crash in pool destruction during session teardown.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@6905 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-14Suspend deletion of cross-thread pools until they are empty. Prevents ↵Carl Hetherington
crashes when the freeze thread completes. git-svn-id: svn://localhost/ardour2/branches/3.0@6893 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-06(3.0 version of 2.0-ongoing) fix 100% CPU usage after killing JACK caused by ↵Paul Davis
faulty logic in butler thread main loop git-svn-id: svn://localhost/ardour2/branches/3.0@6865 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-31stop metering thread as we disconnect a session from audioengine; explicitly ↵Paul Davis
drop connections early in ~Route so that we don't still have signals being handled while we destruct; fix up some valgrind warnings git-svn-id: svn://localhost/ardour2/branches/3.0@6425 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-25rationalize destruction pathway (some more); tidy-ify some ImageFrame codePaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@6398 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-17switch to using boost::signals2 instead of sigc++, at least for libardour. ↵Paul Davis
not finished yet, but compiles, loads sessions, records and can close a session without a crash git-svn-id: svn://localhost/ardour2/branches/3.0@6372 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-09major design changes: use glib event loop for MIDI thread/UI; rework design ↵Paul Davis
of BaseUI and AbstractUI; solo & mute are both temporarily broken; OSC control up next; may segfault during exit git-svn-id: svn://localhost/ardour2/branches/3.0@6328 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-04cross-thread handling of SessionEvent allocation/deallocation, with ↵Paul Davis
widespread consequences git-svn-id: svn://localhost/ardour2/branches/3.0@6283 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-24Move butler methods from Session to Butler.David Robillard
Slay the dragon. A lil' bit. git-svn-id: svn://localhost/ardour2/branches/3.0@5901 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-23Split butler into separate object (partially, just data so far...)David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@5900 d708f5d6-7413-0410-9779-e7cbd77b26cf