From: Carl Hetherington Date: Mon, 13 Apr 2020 22:44:33 +0000 (+0200) Subject: Try to give a better error when we fail to start J2K encoding X-Git-Tag: v2.15.52~24 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=778a8b0e19715ed98969ce84cdf4859e1e0e7e52 Try to give a better error when we fail to start J2K encoding (probably because of a lack of addressable RAM). See #1540. --- diff --git a/src/lib/j2k_encoder.cc b/src/lib/j2k_encoder.cc index ac420517f..3d7b342da 100644 --- a/src/lib/j2k_encoder.cc +++ b/src/lib/j2k_encoder.cc @@ -116,6 +116,9 @@ J2KEncoder::end () terminate_threads (); + /* Something might have been thrown during terminate_threads */ + rethrow (); + LOG_GENERAL (N_("Mopping up %1"), _queue.size()); /* The following sequence of events can occur in the above code: diff --git a/src/lib/job.cc b/src/lib/job.cc index a83249e79..a4ea9ec6f 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -122,6 +122,42 @@ Job::run_wrapper () set_progress (1); set_state (FINISHED_ERROR); + } catch (dcp::StartCompressionError& e) { + + bool done = false; + +#ifdef DCPOMATIC_WINDOWS +#if (__GNUC__ && !__x86_64__) + /* 32-bit */ + set_error ( + _("Failed to encode the DCP."), + _("This error has probably occurred because you are running the 32-bit version of DCP-o-matic and " + "trying to use too many encoding threads. Please reduce the 'number of threads DCP-o-matic should " + "use' in the General tab of Preferences and try again.") + ); + done = true; +#else + /* 64-bit */ + if (running_32_on_64()) { + set_error ( + _("Failed to encode the DCP."), + _("This error has probably occurred because you are running the 32-bit version of DCP-o-matic. Please re-install DCP-o-matic with the 64-bit installer and try again.") + ); + done = true; + } +#endif +#endif + + if (!done) { + set_error ( + e.what (), + string (_("It is not known what caused this error.")) + " " + REPORT_PROBLEM + ); + } + + set_progress (1); + set_state (FINISHED_ERROR); + } catch (OpenFileError& e) { set_error (