summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-09-10 20:14:27 +0200
committerCarl Hetherington <cth@carlh.net>2022-09-10 23:21:08 +0200
commit3005c17f626e739b2f8d63f203a0b0a3240eb530 (patch)
treebd9e617932013933f1d3a00199c5cda897d75735
parent78b87aaa0fc6ac7ba2b79409a38e472bd50d24a9 (diff)
Use atomic shared_ptr stuff for _black_frame.
-rw-r--r--src/lib/player.cc12
-rw-r--r--src/lib/player.h1
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 */