Don't display frames per second during digest calculation; clear job sub-name on...
authorCarl Hetherington <cth@carlh.net>
Fri, 8 Nov 2013 09:33:37 +0000 (09:33 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 8 Nov 2013 09:33:37 +0000 (09:33 +0000)
src/lib/job.cc
src/lib/transcode_job.cc
src/lib/transcoder.cc
src/lib/transcoder.h
src/wx/job_manager_view.cc

index cc52a29f2d5eb4be076d9df9786341497cb50af1..9981934ec93767d1286ff459acbe3845de9af821 100644 (file)
@@ -189,6 +189,7 @@ Job::set_state (State s)
                if (_state == FINISHED_OK || _state == FINISHED_ERROR || _state == FINISHED_CANCELLED) {
                        _ran_for = elapsed_time ();
                        finished = true;
+                       _sub_name.clear ();
                }
        }
 
index 74b425c1e6a3fd5b9f5340b10371c1050049a7a3..fd69b08e7c58b5a353570433d5f53c937585ed48 100644 (file)
@@ -90,8 +90,8 @@ TranscodeJob::status () const
 
        s << Job::status ();
 
-       if (!finished ()) {
-               s << "; " << fixed << setprecision (1) << fps << N_(" ") << _("frames per second");
+       if (!finished () && !_transcoder->finishing ()) {
+               s << "; " << fixed << setprecision (1) << fps << " " << _("frames per second");
        }
        
        return s.str ();
index 717f2855661d02dd263d4197b8d19e31698e97db..24f22a9cb4cc35030d1d34ac27a9053b10eff9e5 100644 (file)
@@ -66,6 +66,7 @@ Transcoder::Transcoder (shared_ptr<const Film> f, shared_ptr<Job> j)
        : _job (j)
        , _player (f->make_player ())
        , _encoder (new Encoder (f, j))
+       , _finishing (false)
 {
        _player->Video.connect (bind (video_proxy, _encoder, _1, _2, _3, _4));
        _player->Audio.connect (bind (audio_proxy, _encoder, _1));
@@ -76,6 +77,8 @@ Transcoder::go ()
 {
        _encoder->process_begin ();
        while (!_player->pass ()) {}
+
+       _finishing = true;
        _encoder->process_end ();
 }
 
index 9c0de29bf17b47fe8832bde849c2486db40f28db..b1183b0bb5448ebbcc41921dde4fcf0e0b90ed0e 100644 (file)
@@ -40,9 +40,15 @@ public:
        float current_encoding_rate () const;
        int video_frames_out () const;
 
+       /** @return true if we are in the process of calling Encoder::process_end */
+       bool finishing () const {
+               return _finishing;
+       }
+
 private:
        /** A Job that is running this Transcoder, or 0 */
        boost::shared_ptr<Job> _job;
        boost::shared_ptr<Player> _player;
        boost::shared_ptr<Encoder> _encoder;
+       bool _finishing;
 };
index 7cfcf3423ce9d2fdaba23d90290a1920011c32a9..47af3b48c9ab06274e835d35678388b2914e9ed1 100644 (file)
@@ -96,16 +96,25 @@ public:
 
 private:
 
+       void update_job_name ()
+       {
+               string n = "<b>" + _job->name () + "</b>";
+               if (!_job->sub_name().empty ()) {
+                       n += "\n" + _job->sub_name ();
+               }
+               
+               if (n != _last_name) {
+                       _name->SetLabelMarkup (std_to_wx (n));
+                       _last_name = n;
+               }
+       }
+
        void progress ()
        {
                float const p = _job->progress ();
                if (p >= 0) {
                        checked_set (_message, _job->status ());
-                       string const n = "<b>" + _job->name () + "</b>\n" + _job->sub_name ();
-                       if (n != _last_name) {
-                               _name->SetLabelMarkup (std_to_wx (n));
-                               _last_name = n;
-                       }
+                       update_job_name ();
                        int const pp = min (100.0f, p * 100);
                        _gauge->SetValue (pp);
                }
@@ -117,6 +126,8 @@ private:
        void finished ()
        {
                checked_set (_message, _job->status ());
+               update_job_name ();
+               
                if (!_job->finished_cancelled ()) {
                        _gauge->SetValue (100);
                }