diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-09-10 20:14:27 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-09-10 23:21:08 +0200 |
| commit | 3005c17f626e739b2f8d63f203a0b0a3240eb530 (patch) | |
| tree | bd9e617932013933f1d3a00199c5cda897d75735 | |
| parent | 78b87aaa0fc6ac7ba2b79409a38e472bd50d24a9 (diff) | |
Use atomic shared_ptr stuff for _black_frame.
| -rw-r--r-- | src/lib/player.cc | 12 | ||||
| -rw-r--r-- | src/lib/player.h | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index 9cc7e5d25..0ff2c4032 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -344,11 +344,9 @@ Player::set_video_container_size (dcp::Size s) _video_container_size = s; - { - boost::mutex::scoped_lock lm (_mutex); - _black_image = make_shared<Image>(AV_PIX_FMT_RGB24, _video_container_size, Image::Alignment::PADDED); - _black_image->make_black (); - } + auto black = make_shared<Image>(AV_PIX_FMT_RGB24, _video_container_size, Image::Alignment::PADDED); + black->make_black (); + std::atomic_store(&_black_image, black); Change (ChangeType::DONE, PlayerProperty::VIDEO_CONTAINER_SIZE, false); } @@ -399,8 +397,10 @@ Player::film_change (ChangeType type, Film::Property p) shared_ptr<PlayerVideo> Player::black_player_video_frame (Eyes eyes) const { + auto black = std::atomic_load(&_black_image); + return std::make_shared<PlayerVideo> ( - std::make_shared<const RawImageProxy>(_black_image), + std::make_shared<const RawImageProxy>(black), Crop(), optional<double>(), _video_container_size, diff --git a/src/lib/player.h b/src/lib/player.h index 388a160c7..5abd59de2 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -173,6 +173,7 @@ private: * the size of preview in a window. */ boost::atomic<dcp::Size> _video_container_size; + /** Should be accessed using the std::atomic... methods */ std::shared_ptr<Image> _black_image; /** true if the player should ignore all video; i.e. never produce any */ |
