_last_write_times.push_back (*mod);
} else {
boost::system::error_code ec;
- auto last_write = boost::filesystem::last_write_time(i->content(), ec);
+ auto last_write = dcp::filesystem::last_write_time(i->content(), ec);
_last_write_times.push_back (ec ? 0 : last_write);
}
}
void
-Content::as_xml (xmlpp::Node* node, bool with_paths) const
+Content::as_xml(xmlpp::Element* element, bool with_paths) const
{
boost::mutex::scoped_lock lm (_mutex);
if (with_paths) {
for (size_t i = 0; i < _paths.size(); ++i) {
- auto p = node->add_child("Path");
+ auto p = cxml::add_child(element, "Path");
p->add_child_text (_paths[i].string());
p->set_attribute ("mtime", raw_convert<string>(_last_write_times[i]));
}
}
- node->add_child("Digest")->add_child_text(_digest);
- node->add_child("Position")->add_child_text(raw_convert<string>(_position.get()));
- node->add_child("TrimStart")->add_child_text(raw_convert<string>(_trim_start.get()));
- node->add_child("TrimEnd")->add_child_text(raw_convert<string>(_trim_end.get()));
+ cxml::add_text_child(element, "Digest", _digest);
+ cxml::add_text_child(element, "Position", raw_convert<string>(_position.get()));
+ cxml::add_text_child(element, "TrimStart", raw_convert<string>(_trim_start.get()));
+ cxml::add_text_child(element, "TrimEnd", raw_convert<string>(_trim_end.get()));
if (_video_frame_rate) {
- node->add_child("VideoFrameRate")->add_child_text(raw_convert<string>(_video_frame_rate.get()));
+ cxml::add_text_child(element, "VideoFrameRate", raw_convert<string>(_video_frame_rate.get()));
}
}
_last_write_times.clear ();
for (auto i: _paths) {
boost::system::error_code ec;
- auto last_write = boost::filesystem::last_write_time(i, ec);
+ auto last_write = dcp::filesystem::last_write_time(i, ec);
_last_write_times.push_back (ec ? 0 : last_write);
}
}
void
-Content::set_trim_start (ContentTime t)
+Content::set_trim_start(shared_ptr<const Film> film, ContentTime t)
{
DCPOMATIC_ASSERT (t.get() >= 0);
/* See note in ::set_position */
if (!video && audio) {
- audio->modify_trim_start (t);
+ audio->modify_trim_start(film, t);
}
ContentChangeSignaller cc (this, ContentProperty::TRIM_START);
{
boost::mutex::scoped_lock lm (_mutex);
- _trim_start = t;
+ if (_trim_start == t) {
+ cc.abort();
+ } else {
+ _trim_start = t;
+ }
}
}
Content::paths_valid () const
{
for (auto i: _paths) {
- if (!boost::filesystem::exists (i)) {
+ if (!dcp::filesystem::exists(i)) {
return false;
}
}
_last_write_times.clear ();
for (auto i: _paths) {
boost::system::error_code ec;
- auto last_write = boost::filesystem::last_write_time(i, ec);
+ auto last_write = dcp::filesystem::last_write_time(i, ec);
_last_write_times.push_back (ec ? 0 : last_write);
}
}
void
-Content::set_video_frame_rate (double r)
+Content::set_video_frame_rate(shared_ptr<const Film> film, double r)
{
ContentChangeSignaller cc (this, ContentProperty::VIDEO_FRAME_RATE);
/* Make sure trim is still on a frame boundary */
if (video) {
- set_trim_start (trim_start());
+ set_trim_start(film, trim_start());
}
}
boost::mutex::scoped_lock lm (_mutex);
_paths.push_back (p);
boost::system::error_code ec;
- auto last_write = boost::filesystem::last_write_time(p, ec);
+ auto last_write = dcp::filesystem::last_write_time(p, ec);
_last_write_times.push_back (ec ? 0 : last_write);
}
{
bool write_time_changed = false;
for (auto i = 0U; i < _paths.size(); ++i) {
- if (boost::filesystem::last_write_time(_paths[i]) != last_write_time(i)) {
+ if (dcp::filesystem::last_write_time(_paths[i]) != last_write_time(i)) {
write_time_changed = true;
break;
}