diff options
Diffstat (limited to 'src/wx/audio_dialog.cc')
| -rw-r--r-- | src/wx/audio_dialog.cc | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc index d885e2d4d..26655631e 100644 --- a/src/wx/audio_dialog.cc +++ b/src/wx/audio_dialog.cc @@ -100,16 +100,14 @@ AudioDialog::set_content (shared_ptr<AudioContent> c) void AudioDialog::try_to_load_analysis () { - shared_ptr<AudioAnalysis> a; - - if (boost::filesystem::exists (_content->audio_analysis_path())) { - a.reset (new AudioAnalysis (_content->audio_analysis_path ())); - } else { - if (IsShown ()) { - _content->analyse_audio (bind (&AudioDialog::try_to_load_analysis, this)); - } + if (!boost::filesystem::exists (_content->audio_analysis_path()) && IsShown ()) { + _content->analyse_audio (bind (&AudioDialog::analysis_finished, this)); + return; } - + + shared_ptr<AudioAnalysis> a; + + a.reset (new AudioAnalysis (_content->audio_analysis_path ())); _plot->set_analysis (a); if (_channel_checkbox[0]) { @@ -124,6 +122,20 @@ AudioDialog::try_to_load_analysis () } void +AudioDialog::analysis_finished () +{ + if (!boost::filesystem::exists (_content->audio_analysis_path())) { + /* We analysed and still nothing showed up, so maybe it was cancelled or it failed. + Give up. + */ + _plot->set_message (_("Could not analyse audio.")); + return; + } + + try_to_load_analysis (); +} + +void AudioDialog::channel_clicked (wxCommandEvent& ev) { int c = 0; |
