summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-02-25 19:27:58 +0000
committerCarl Hetherington <cth@carlh.net>2013-02-25 19:27:58 +0000
commit8bfb6ae0780b0bf3318c345df78518ad3fabc9fc (patch)
treec423e4619fff25b91f85eaa5f4509dc26fda218c /src/lib
parentd371988d26f8c9c4240dc3794df044cbe95d5d0d (diff)
Tidy up creation of analysis a bit.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/audio_analysis.cc8
-rw-r--r--src/lib/film.cc3
-rw-r--r--src/lib/film.h2
-rw-r--r--src/lib/job.cc1
-rw-r--r--src/lib/job.h1
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: