diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-12-02 15:31:54 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-12-02 15:31:54 +0000 |
| commit | 9c7a244ac08898b9e0b41454204bc4cba52c28e8 (patch) | |
| tree | 45bee7875afbf47508ceb97f5f70308b51eeffd0 /src | |
| parent | 79891687adcc6c8f0b8f5d4e5804da1b2cd8c29f (diff) | |
Fix crash on double-click of show-audio button.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/audio_content.cc | 10 | ||||
| -rw-r--r-- | src/lib/audio_content.h | 2 | ||||
| -rw-r--r-- | src/wx/audio_dialog.cc | 6 | ||||
| -rw-r--r-- | src/wx/audio_dialog.h | 1 |
4 files changed, 10 insertions, 9 deletions
diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 04823d1e6..97372b962 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -119,17 +119,17 @@ AudioContent::set_audio_delay (int d) signal_changed (AudioContentProperty::AUDIO_DELAY); } -void +boost::signals2::connection AudioContent::analyse_audio (boost::function<void()> finished) { shared_ptr<const Film> film = _film.lock (); - if (!film) { - return; - } + assert (film); shared_ptr<AnalyseAudioJob> job (new AnalyseAudioJob (film, dynamic_pointer_cast<AudioContent> (shared_from_this()))); - job->Finished.connect (finished); + boost::signals2::connection c = job->Finished.connect (finished); JobManager::instance()->add (job); + + return c; } boost::filesystem::path diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index b100d7aba..ca4a1f234 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -58,7 +58,7 @@ public: virtual AudioMapping audio_mapping () const = 0; virtual void set_audio_mapping (AudioMapping) = 0; - void analyse_audio (boost::function<void()>); + boost::signals2::connection analyse_audio (boost::function<void()>); boost::filesystem::path audio_analysis_path () const; void set_audio_gain (float); diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc index 78f3deab6..1bce22811 100644 --- a/src/wx/audio_dialog.cc +++ b/src/wx/audio_dialog.cc @@ -87,7 +87,7 @@ void AudioDialog::set_content (shared_ptr<AudioContent> c) { _content_changed_connection.disconnect (); - + _content = c; try_to_load_analysis (); @@ -104,9 +104,9 @@ AudioDialog::try_to_load_analysis () if (!IsShown ()) { return; } - + if (!boost::filesystem::exists (_content->audio_analysis_path())) { - _content->analyse_audio (bind (&AudioDialog::analysis_finished, this)); + _analysis_finished_connection = _content->analyse_audio (bind (&AudioDialog::analysis_finished, this)); return; } diff --git a/src/wx/audio_dialog.h b/src/wx/audio_dialog.h index 8623192c4..b4257057d 100644 --- a/src/wx/audio_dialog.h +++ b/src/wx/audio_dialog.h @@ -47,4 +47,5 @@ private: wxCheckBox* _type_checkbox[AudioPoint::COUNT]; wxSlider* _smoothing; boost::signals2::scoped_connection _content_changed_connection; + boost::signals2::scoped_connection _analysis_finished_connection; }; |
