diff options
Diffstat (limited to 'src/lib/reel_writer.cc')
| -rw-r--r-- | src/lib/reel_writer.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index a27d7f63e..3a8a95ab1 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -29,6 +29,7 @@ #include "film_util.h" #include "image.h" #include "image_png.h" +#include "info_file_checker.h" #include "job.h" #include "j2k_frame_info.h" #include "log.h" @@ -757,10 +758,23 @@ try } int64_t total_done = 0; + + auto progress = [&total_done, total_size, set_progress](int64_t done, int64_t) { + set_progress(total_done + done, total_size); + }; + for (auto asset: assets) { - asset->hash([&total_done, total_size, set_progress](int64_t done, int64_t) { - set_progress(total_done + done, total_size); - }); + if (asset == _j2k_picture_asset && Config::instance()->check_disk_writes()) { + try { + InfoFileChecker checker(_info_file); + asset->hash(progress, boost::bind(&InfoFileChecker::check, &checker, _1, _2, _3)); + } catch (OpenFileError&) { + LOG_ERROR_NC("Could not open info file to check disk writes"); + asset->hash(progress); + } + } else { + asset->hash(progress); + } total_done += asset->file() ? boost::filesystem::file_size(*asset->file()) : 0; } |
