/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "util.h"
#include "film.h"
#include "log.h"
+#include "dcpomatic_log.h"
#include "config.h"
#include "dcp_video.h"
#include "cross.h"
#include "i18n.h"
-#define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL);
-#define LOG_GENERAL_NC(...) _film->log()->log (__VA_ARGS__, LogEntry::TYPE_GENERAL);
-#define LOG_ERROR(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_ERROR);
-#define LOG_TIMING(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_TIMING);
-#define LOG_DEBUG_ENCODE(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_DEBUG_ENCODE);
-
using std::list;
using std::cout;
+using std::exception;
using boost::shared_ptr;
using boost::weak_ptr;
using boost::optional;
LOG_GENERAL (N_("Encode left-over frame %1"), (*i)->index ());
try {
_writer->write (
- (*i)->encode_locally (boost::bind (&Log::dcp_log, _film->log().get(), _1, _2)),
- (*i)->index (),
- (*i)->eyes ()
+ (*i)->encode_locally(),
+ (*i)->index(),
+ (*i)->eyes()
);
frame_done ();
} catch (std::exception& e) {
position,
_film->video_frame_rate(),
_film->j2k_bandwidth(),
- _film->resolution(),
- _film->log()
+ _film->resolution()
)
));
int n = 0;
for (list<boost::thread *>::iterator i = _threads.begin(); i != _threads.end(); ++i) {
+ /* Be careful not to throw in here otherwise _threads will not be clear()ed */
LOG_GENERAL ("Terminating thread %1 of %2", n + 1, _threads.size ());
(*i)->interrupt ();
- DCPOMATIC_ASSERT ((*i)->joinable ());
+ if (!(*i)->joinable()) {
+ LOG_ERROR_NC ("About to join() a non-joinable thread");
+ }
try {
(*i)->join ();
} catch (boost::thread_interrupted& e) {
- /* This is to be expected */
+ /* This is to be expected (I think?) */
+ } catch (exception& e) {
+ LOG_ERROR ("join() threw an exception: %1", e.what());
+ } catch (...) {
+ LOG_ERROR_NC ("join() threw an exception");
}
delete *i;
LOG_GENERAL_NC ("Thread terminated");
} else {
try {
LOG_TIMING ("start-local-encode thread=%1 frame=%2", thread_id(), vf->index());
- encoded = vf->encode_locally (boost::bind (&Log::dcp_log, _film->log().get(), _1, _2));
+ encoded = vf->encode_locally ();
LOG_TIMING ("finish-local-encode thread=%1 frame=%2", thread_id(), vf->index());
} catch (std::exception& e) {
/* This is very bad, so don't cope with it, just pass it on */