Age | Commit message (Collapse) | Author |
|
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|
|
names and make one of them private
|
|
|
|
prevents "disk too slow" message when seeking in the auditioner.
|
|
|
|
the place we are ready to handle them.
|
|
with audio after preferences removal, when buffer preset is set to Medium.
[Details] It happened because ARDOUR::Butler::thread_work() was called before Buttler::map_parameters() method was called, which sets up the correct buffering parameters (set_buffering_parameters () call) according to chosen preset.
I've added this calls into Butler::start_thread () to make sure everything is set up and ready for use for Butler.
This is a hot fix, because it requires the review from Paul Davis, and probably more gentle solution. But it's possible this commit may become the main solution itself.
|
|
Amazing that this didn't show up on Linux at all, or on the first run after build. Computers ... sigh.
Conflicts:
libs/ardour/butler.cc
|
|
(plus custom).
Actual numbers for the parameters are still to be determined/verified, and probably subject to
some platform specificity
|
|
|
|
|
|
(hopefully) fixes export randomly stalling on windows:
dequeue_request() was a single request (no queue) on Windows.
Butler::queue_request() is called
-> Butler goes to work..
-> while working, another request is queued
-> butler never sees this
-> deadlock
during Freewheeling/Export wait_until_finished()
waits for the 2nd request to be handled, and never returns.
|
|
normal pthreads platforms and PTW32
|
|
capture/playback buffers are too full/empty
|
|
|
|
|
|
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pbd/pthread_utils
threads created with this code can now just return a value as they normally would, and the
infrastructure will ensure cleanup. there is no longer any reason to call pthread_exit_pbd()
and so that has been removed.
|
|
|
|
|
|
|
|
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
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
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@10301 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@10300 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@9901 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
fault :D
git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@9047 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@8166 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@7368 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
compile warnings
git-svn-id: svn://localhost/ardour2/branches/3.0@7329 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@7250 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@7248 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@7100 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
Diskstreams. Breaks 3.0 file format again.
git-svn-id: svn://localhost/ardour2/branches/3.0@6945 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@6905 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
crashes when the freeze thread completes.
git-svn-id: svn://localhost/ardour2/branches/3.0@6893 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
faulty logic in butler thread main loop
git-svn-id: svn://localhost/ardour2/branches/3.0@6865 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@6398 d708f5d6-7413-0410-9779-e7cbd77b26cf
|