);
}
-/** Re-read crop, fade, inter/out size and colour conversion from our content */
-void
+/** Re-read crop, fade, inter/out size and colour conversion from our content.
+ * @return true if this was possible, false if not.
+ */
+bool
PlayerVideo::reset_metadata (dcp::Size video_container_size, dcp::Size film_frame_size)
{
shared_ptr<Content> content = _content.lock();
- DCPOMATIC_ASSERT (content);
- DCPOMATIC_ASSERT (_video_frame);
+ if (!content || !_video_frame) {
+ return false;
+ }
_crop = content->video->crop();
_fade = content->video->fade(_video_frame.get());
_inter_size = content->video->scale().size(content->video, video_container_size, film_frame_size);
_out_size = video_container_size;
_colour_conversion = content->video->colour_conversion();
+
+ return true;
}
void add_metadata (xmlpp::Node* node) const;
void send_binary (boost::shared_ptr<Socket> socket) const;
- void reset_metadata (dcp::Size video_container_size, dcp::Size film_frame_size);
+ bool reset_metadata (dcp::Size video_container_size, dcp::Size film_frame_size);
bool has_j2k () const;
dcp::Data j2k () const;
_panel_size.height = ev.GetSize().GetHeight();
calculate_sizes ();
- quick_refresh ();
+ if (!quick_refresh()) {
+ slow_refresh ();
+ }
update_position_label ();
update_position_slider ();
}
}
calculate_sizes ();
+ bool refreshed = false;
if (
property == VideoContentProperty::CROP ||
property == VideoContentProperty::SCALE ||
property == PlayerProperty::VIDEO_CONTAINER_SIZE ||
property == PlayerProperty::FILM_CONTAINER
) {
- quick_refresh ();
- } else {
+ refreshed = quick_refresh ();
+ }
+
+ if (!refreshed) {
slow_refresh ();
}
update_position_label ();
seek (_video_position, true);
}
-/** Re-get the current frame quickly by resetting the metadata in the PlayerVideo that we used last time */
-void
+/** Try to re-get the current frame quickly by resetting the metadata
+ * in the PlayerVideo that we used last time.
+ * @return true if this was possible, false if not.
+ */
+bool
FilmViewer::quick_refresh ()
{
if (!_player_video.first) {
- return;
+ return false;
+ }
+
+ if (!_player_video.first->reset_metadata (_player->video_container_size(), _film->frame_size())) {
+ return false;
}
- _player_video.first->reset_metadata (_player->video_container_size(), _film->frame_size());
display_player_video ();
+ return true;
}
void