diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-02-25 19:27:58 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-02-25 19:27:58 +0000 |
| commit | 8bfb6ae0780b0bf3318c345df78518ad3fabc9fc (patch) | |
| tree | c423e4619fff25b91f85eaa5f4509dc26fda218c /src/lib | |
| parent | d371988d26f8c9c4240dc3794df044cbe95d5d0d (diff) | |
Tidy up creation of analysis a bit.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/audio_analysis.cc | 8 | ||||
| -rw-r--r-- | src/lib/film.cc | 3 | ||||
| -rw-r--r-- | src/lib/film.h | 2 | ||||
| -rw-r--r-- | src/lib/job.cc | 1 | ||||
| -rw-r--r-- | src/lib/job.h | 1 |
5 files changed, 13 insertions, 2 deletions
diff --git a/src/lib/audio_analysis.cc b/src/lib/audio_analysis.cc index 39c1ba226..fffafc4d4 100644 --- a/src/lib/audio_analysis.cc +++ b/src/lib/audio_analysis.cc @@ -21,6 +21,7 @@ #include <cmath> #include <cassert> #include <fstream> +#include <boost/filesystem.hpp> #include "audio_analysis.h" using std::ostream; @@ -101,7 +102,9 @@ AudioAnalysis::points (int c) const void AudioAnalysis::write (string filename) { - ofstream f (filename.c_str ()); + string tmp = filename + ".tmp"; + + ofstream f (tmp.c_str ()); f << _data.size() << "\n"; for (vector<vector<AudioPoint> >::iterator i = _data.begin(); i != _data.end(); ++i) { f << i->size () << "\n"; @@ -109,4 +112,7 @@ AudioAnalysis::write (string filename) j->write (f); } } + + f.close (); + boost::filesystem::rename (tmp, filename); } diff --git a/src/lib/film.cc b/src/lib/film.cc index f36614689..ab636bdfc 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -342,7 +342,10 @@ Film::examine_content () void Film::analyse_audio_finished () { + ensure_ui_thread (); _analyse_audio_job.reset (); + + AudioAnalysisFinished (); } void diff --git a/src/lib/film.h b/src/lib/film.h index c268d3eac..847ab434e 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -367,6 +367,8 @@ public: /** Emitted when some property has changed */ mutable boost::signals2::signal<void (Property)> Changed; + boost::signals2::signal<void ()> AudioAnalysisFinished; + /** Current version number of the state file */ static int const state_version; diff --git a/src/lib/job.cc b/src/lib/job.cc index bfad65a0a..6a53e629c 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -147,7 +147,6 @@ Job::set_state (State s) if (_state == FINISHED_OK || _state == FINISHED_ERROR) { _ran_for = elapsed_time (); - Finished (); } } diff --git a/src/lib/job.h b/src/lib/job.h index 1538e2779..c98dbaea1 100644 --- a/src/lib/job.h +++ b/src/lib/job.h @@ -65,6 +65,7 @@ public: void descend (float); float overall_progress () const; + /** Emitted by the JobManagerView from the UI thread */ boost::signals2::signal<void()> Finished; protected: |
