Remove Film dependency from Butler.
authorCarl Hetherington <cth@carlh.net>
Wed, 2 Aug 2017 14:52:11 +0000 (15:52 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 14 Aug 2017 20:07:48 +0000 (21:07 +0100)
src/lib/butler.cc
src/lib/butler.h
src/lib/ffmpeg_encoder.cc
src/wx/film_viewer.cc
test/butler_test.cc

index 910b5ea4897b612c76a458909d112b11185d67dc..ef565c02b0607849689ffb8d1fd22da4f373062f 100644 (file)
@@ -43,11 +43,11 @@ using boost::optional;
 /** Minimum audio readahead in frames; should never be reached unless there are bugs in Player */
 #define MAXIMUM_AUDIO_READAHEAD (48000*60)
 
-#define LOG_WARNING(...) _film.lock()->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_WARNING);
+#define LOG_WARNING(...) _log->log (String::compose(__VA_ARGS__), LogEntry::TYPE_WARNING);
 
-Butler::Butler (weak_ptr<const Film> film, shared_ptr<Player> player, AudioMapping audio_mapping, int audio_channels)
-       : _film (film)
-       , _player (player)
+Butler::Butler (shared_ptr<Player> player, shared_ptr<Log> log, AudioMapping audio_mapping, int audio_channels)
+       : _player (player)
+       , _log (log)
        , _prepare_work (new boost::asio::io_service::work (_prepare_service))
        , _pending_seek_accurate (false)
        , _finished (false)
index 1e8947f9d2d554f4e58af0bdc4f6cdef0474e77a..e416ba8183736ad4aff376d1f52610881e18c808 100644 (file)
 #include <boost/signals2.hpp>
 #include <boost/asio.hpp>
 
-class Film;
 class Player;
 class PlayerVideo;
+class Log;
 
 class Butler : public ExceptionStore, public boost::noncopyable
 {
 public:
-       Butler (boost::weak_ptr<const Film> film, boost::shared_ptr<Player> player, AudioMapping map, int audio_channels);
+       Butler (boost::shared_ptr<Player> player, boost::shared_ptr<Log> log, AudioMapping map, int audio_channels);
        ~Butler ();
 
        void seek (DCPTime position, bool accurate);
@@ -53,8 +53,8 @@ private:
        bool should_run () const;
        void prepare (boost::weak_ptr<PlayerVideo> video) const;
 
-       boost::weak_ptr<const Film> _film;
        boost::shared_ptr<Player> _player;
+       boost::shared_ptr<Log> _log;
        boost::thread* _thread;
 
        VideoRingBuffers _video;
index 2a9146f116520b6bffaabdd5ad7c58166ca329d1..c96f1b5e554c1005cb455d54f61d244e8d28862e 100644 (file)
@@ -99,7 +99,7 @@ FFmpegEncoder::FFmpegEncoder (shared_ptr<const Film> film, weak_ptr<Job> job, bo
                }
        }
 
-       _butler.reset (new Butler (film, _player, map, _output_audio_channels));
+       _butler.reset (new Butler (_player, film->log(), map, _output_audio_channels));
 }
 
 void
index 4c3cc386c606e4dc45c70fac850d40ba890eaeeb..0299b24626fd803c505b567b2d8e0338c2bb4d79 100644 (file)
@@ -239,7 +239,7 @@ FilmViewer::recreate_butler ()
                map.set (2, 1, 1 / sqrt(2)); // C -> R
        }
 
-       _butler.reset (new Butler (_film, _player, map, _audio_channels));
+       _butler.reset (new Butler (_player, _film->log(), map, _audio_channels));
        if (!Config::instance()->preview_sound()) {
                _butler->disable_audio ();
        }
index 213561341afb345bb8cc7d9442d399775004cc72..dae098e308eb339f6dcfe2e8b7d1d6ec06bc7ffc 100644 (file)
@@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE (butler_test1)
                map.set (i, i, 1);
        }
 
-       Butler butler (film, shared_ptr<Player>(new Player(film, film->playlist())), map, 6);
+       Butler butler (shared_ptr<Player>(new Player(film, film->playlist())), film->log(), map, 6);
 
        BOOST_CHECK (butler.get_video().second == DCPTime());
        BOOST_CHECK (butler.get_video().second == DCPTime::from_frames(1, 24));