diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc index a6942e678b..633292b157 100644 --- a/libs/ardour/audiofilesource.cc +++ b/libs/ardour/audiofilesource.cc @@ -335,6 +335,9 @@ AudioFileSource::is_empty (Session& /*s*/, string path) int AudioFileSource::setup_peakfile () { + if (_session.deletion_in_progress()) { + return 0; + } if (!(_flags & NoPeakFile)) { return initialize_peakfile (_path); } else { diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc index bfc2d9e4ab..9aea6f1e0e 100644 --- a/libs/ardour/audiosource.cc +++ b/libs/ardour/audiosource.cc @@ -56,6 +56,7 @@ #include "ardour/audiosource.h" #include "ardour/rc_configuration.h" #include "ardour/runtime_functions.h" +#include "ardour/session.h" #include "i18n.h" @@ -746,6 +747,12 @@ AudioSource::build_peaks_from_scratch () lp.release(); // allow butler to refill buffers + if (_session.deletion_in_progress()) { + cerr << "peak file creation interrupted: " << _name << endmsg; + done_with_peakfile_writes (false); + goto out; + } + if (compute_and_write_peaks (buf.get(), current_frame, frames_read, true, false, _FPP)) { break; }