diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-09-10 17:52:20 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-09-10 23:20:59 +0200 |
| commit | bd9098f7fa9f8415da12ac0f08a1087c68f6baf6 (patch) | |
| tree | 59d761ab36172237fb4ee25e4a2832aa8e135e9b | |
| parent | 167b5edb8a1760a8532b2973cd7cca70333249f1 (diff) | |
Use atomic for _video_container_size.
| -rw-r--r-- | src/lib/player.cc | 26 | ||||
| -rw-r--r-- | src/lib/player.h | 3 |
2 files changed, 13 insertions, 16 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index af963d50d..a6cfd9367 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -345,17 +345,15 @@ Player::set_video_container_size (dcp::Size s) { Change (ChangeType::PENDING, PlayerProperty::VIDEO_CONTAINER_SIZE, false); - { - boost::mutex::scoped_lock lm (_mutex); - - if (s == _video_container_size) { - lm.unlock (); - Change (ChangeType::CANCELLED, PlayerProperty::VIDEO_CONTAINER_SIZE, false); - return; - } + if (s == _video_container_size) { + Change(ChangeType::CANCELLED, PlayerProperty::VIDEO_CONTAINER_SIZE, false); + return; + } - _video_container_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 (); } @@ -870,14 +868,14 @@ Player::open_subtitles_for_frame (DCPTime time) const } /* i.image will already have been scaled to fit _video_container_size */ - dcp::Size scaled_size (i.rectangle.width * _video_container_size.width, i.rectangle.height * _video_container_size.height); + dcp::Size scaled_size (i.rectangle.width * _video_container_size.load().width, i.rectangle.height * _video_container_size.load().height); captions.push_back ( PositionImage ( i.image, Position<int> ( - lrint(_video_container_size.width * i.rectangle.x), - lrint(_video_container_size.height * i.rectangle.y) + lrint(_video_container_size.load().width * i.rectangle.x), + lrint(_video_container_size.load().height * i.rectangle.y) ) ) ); @@ -1140,8 +1138,8 @@ Player::bitmap_text_start (weak_ptr<Piece> weak_piece, weak_ptr<const TextConten auto image = sub.image; /* We will scale the subtitle up to fit _video_container_size */ - int const width = sub.rectangle.width * _video_container_size.width; - int const height = sub.rectangle.height * _video_container_size.height; + int const width = sub.rectangle.width * _video_container_size.load().width; + int const height = sub.rectangle.height * _video_container_size.load().height; if (width == 0 || height == 0) { return; } diff --git a/src/lib/player.h b/src/lib/player.h index 511a579a0..d586622c4 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -83,7 +83,6 @@ public: std::vector<std::shared_ptr<dcpomatic::Font>> get_subtitle_fonts (); std::list<ReferencedReelAsset> get_reel_assets (); dcp::Size video_container_size () const { - boost::mutex::scoped_lock lm (_mutex); return _video_container_size; } @@ -174,7 +173,7 @@ private: /** Size of the image we are rendering to; this may be the DCP frame size, or * the size of preview in a window. */ - dcp::Size _video_container_size; + boost::atomic<dcp::Size> _video_container_size; std::shared_ptr<Image> _black_image; /** true if the player should ignore all video; i.e. never produce any */ |
