summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-12-02 15:31:54 +0000
committerCarl Hetherington <cth@carlh.net>2013-12-02 15:31:54 +0000
commit9c7a244ac08898b9e0b41454204bc4cba52c28e8 (patch)
tree45bee7875afbf47508ceb97f5f70308b51eeffd0 /src
parent79891687adcc6c8f0b8f5d4e5804da1b2cd8c29f (diff)
Fix crash on double-click of show-audio button.
Diffstat (limited to 'src')
-rw-r--r--src/lib/audio_content.cc10
-rw-r--r--src/lib/audio_content.h2
-rw-r--r--src/wx/audio_dialog.cc6
-rw-r--r--src/wx/audio_dialog.h1
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;
};