summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-09-10 17:52:20 +0200
committerCarl Hetherington <cth@carlh.net>2022-09-10 23:20:59 +0200
commitbd9098f7fa9f8415da12ac0f08a1087c68f6baf6 (patch)
tree59d761ab36172237fb4ee25e4a2832aa8e135e9b
parent167b5edb8a1760a8532b2973cd7cca70333249f1 (diff)
Use atomic for _video_container_size.
-rw-r--r--src/lib/player.cc26
-rw-r--r--src/lib/player.h3
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 */