From bd9098f7fa9f8415da12ac0f08a1087c68f6baf6 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 10 Sep 2022 17:52:20 +0200 Subject: [PATCH] Use atomic for _video_container_size. --- src/lib/player.cc | 26 ++++++++++++-------------- 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(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 ( - 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 weak_piece, weak_ptr> get_subtitle_fonts (); std::list 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 _video_container_size; std::shared_ptr _black_image; /** true if the player should ignore all video; i.e. never produce any */ -- 2.30.2