summaryrefslogtreecommitdiff
path: root/src/wx/audio_dialog.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/audio_dialog.cc')
-rw-r--r--src/wx/audio_dialog.cc30
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;