summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/film_viewer.h3
-rw-r--r--src/wx/timing_panel.cc10
2 files changed, 8 insertions, 5 deletions
diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h
index a67820a8c..aa588b926 100644
--- a/src/wx/film_viewer.h
+++ b/src/wx/film_viewer.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -41,6 +41,7 @@ public:
void set_film (boost::shared_ptr<Film>);
+ /** @return our `playhead' position; this may not lie exactly on a frame boundary */
DCPTime position () const {
return _position;
}
diff --git a/src/wx/timing_panel.cc b/src/wx/timing_panel.cc
index bd4177ffb..d7ed46f46 100644
--- a/src/wx/timing_panel.cc
+++ b/src/wx/timing_panel.cc
@@ -441,14 +441,15 @@ TimingPanel::film_changed (Film::Property p)
void
TimingPanel::trim_start_to_playhead_clicked ()
{
- DCPTime const ph = _viewer->position ();
+ shared_ptr<const Film> film = _parent->film ();
+ DCPTime const ph = _viewer->position().floor (film->video_frame_rate ());
optional<DCPTime> new_ph;
_viewer->set_coalesce_player_changes (true);
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
if (i->position() < ph && ph < i->end ()) {
- FrameRateChange const frc = _parent->film()->active_frame_rate_change (i->position ());
+ FrameRateChange const frc = film->active_frame_rate_change (i->position ());
i->set_trim_start (i->trim_start() + ContentTime (ph - i->position (), frc));
new_ph = i->position ();
}
@@ -464,10 +465,11 @@ TimingPanel::trim_start_to_playhead_clicked ()
void
TimingPanel::trim_end_to_playhead_clicked ()
{
- DCPTime const ph = _viewer->position ();
+ shared_ptr<const Film> film = _parent->film ();
+ DCPTime const ph = _viewer->position().floor (film->video_frame_rate ());
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
if (i->position() < ph && ph < i->end ()) {
- FrameRateChange const frc = _parent->film()->active_frame_rate_change (i->position ());
+ FrameRateChange const frc = film->active_frame_rate_change (i->position ());
i->set_trim_end (ContentTime (i->position() + i->full_length() - ph - DCPTime::from_frames (1, frc.dcp), frc) - i->trim_start());
}
}