From 4d11fe7cea71b0564df9a21a3cc706509d12b0d1 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 15 Jul 2019 01:31:20 +0100 Subject: swaroop: beginnings of DCP -> ecinema support. --- src/lib/util.cc | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'src/lib/util.cc') diff --git a/src/lib/util.cc b/src/lib/util.cc index 1f6fba963..3b6be6dcc 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -44,6 +44,7 @@ #include "ffmpeg_image_proxy.h" #include "image.h" #include "text_decoder.h" +#include "job_manager.h" #include #include #include @@ -945,6 +946,70 @@ emit_subtitle_image (ContentTimePeriod period, dcp::SubtitleImage sub, dcp::Size decoder->emit_bitmap (period, image, rect); } +bool +show_jobs_on_console (bool progress) +{ + bool should_stop = false; + bool first = true; + bool error = false; + while (!should_stop) { + + dcpomatic_sleep (5); + + list > jobs = JobManager::instance()->get(); + + if (!first && progress) { + for (size_t i = 0; i < jobs.size(); ++i) { + cout << "\033[1A\033[2K"; + } + cout.flush (); + } + + first = false; + + int unfinished = 0; + int finished_in_error = 0; + + BOOST_FOREACH (shared_ptr i, jobs) { + if (progress) { + cout << i->name(); + if (!i->sub_name().empty()) { + cout << "; " << i->sub_name(); + } + cout << ": "; + + if (i->progress ()) { + cout << i->status() << " \n"; + } else { + cout << ": Running \n"; + } + } + + if (!i->finished ()) { + ++unfinished; + } + + if (i->finished_in_error ()) { + ++finished_in_error; + error = true; + } + + if (!progress && i->finished_in_error ()) { + /* We won't see this error if we haven't been showing progress, + so show it now. + */ + cout << i->status() << "\n"; + } + } + + if (unfinished == 0 || finished_in_error != 0) { + should_stop = true; + } + } + + return error; +} + #ifdef DCPOMATIC_VARIANT_SWAROOP /* Make up a key from the machine UUID */ -- cgit v1.2.3