13
0

fix crash #6161 - another throw w/o catch

The real problem is: libardourvampplugins:* cannot
be instantiated this remains to be fixed.
This commit is contained in:
Robin Gareus 2015-03-30 10:48:31 +02:00
parent d1b70b2e24
commit da42014c4d
2 changed files with 39 additions and 25 deletions

View File

@ -22,6 +22,10 @@
#include "ardour/session_event.h" #include "ardour/session_event.h"
#include "ardour/transient_detector.h" #include "ardour/transient_detector.h"
#include "pbd/compose.h"
#include "pbd/error.h"
#include "i18n.h"
using namespace std; using namespace std;
using namespace ARDOUR; using namespace ARDOUR;
using namespace PBD; using namespace PBD;
@ -102,13 +106,16 @@ Analyser::analyse_audio_file_source (boost::shared_ptr<AudioFileSource> src)
{ {
AnalysisFeatureList results; AnalysisFeatureList results;
TransientDetector td (src->sample_rate()); try {
TransientDetector td (src->sample_rate());
if (td.run (src->get_transients_path(), src.get(), 0, results) == 0) { if (td.run (src->get_transients_path(), src.get(), 0, results) == 0) {
src->set_been_analysed (true); src->set_been_analysed (true);
} else { } else {
src->set_been_analysed (false);
}
} catch (...) {
error << string_compose(_("Transient Analysis failed for %1."), _("Audio File Source")) << endmsg;;
src->set_been_analysed (false); src->set_been_analysed (false);
return;
} }
} }

View File

@ -1696,31 +1696,38 @@ in this and future transient-detection operations.\n\
} }
} }
TransientDetector t (pl->session().frame_rate());
bool existing_results = !results.empty(); bool existing_results = !results.empty();
_transients.clear (); try {
_valid_transients = false;
for (uint32_t i = 0; i < n_channels(); ++i) { TransientDetector t (pl->session().frame_rate());
AnalysisFeatureList these_results; _transients.clear ();
_valid_transients = false;
t.reset (); for (uint32_t i = 0; i < n_channels(); ++i) {
if (t.run ("", this, i, these_results)) { AnalysisFeatureList these_results;
return -1;
t.reset ();
if (t.run ("", this, i, these_results)) {
return -1;
}
/* translate all transients to give absolute position */
for (AnalysisFeatureList::iterator i = these_results.begin(); i != these_results.end(); ++i) {
(*i) += _position;
}
/* merge */
_transients.insert (_transients.end(), these_results.begin(), these_results.end());
} }
} catch (...) {
/* translate all transients to give absolute position */ error << string_compose(_("Transient Analysis failed for %1."), _("Audio Region")) << endmsg;
return -1;
for (AnalysisFeatureList::iterator i = these_results.begin(); i != these_results.end(); ++i) {
(*i) += _position;
}
/* merge */
_transients.insert (_transients.end(), these_results.begin(), these_results.end());
} }
if (!results.empty()) { if (!results.empty()) {