using boost::weak_ptr;
using boost::optional;
using boost::bind;
+using namespace dcpomatic;
Hints::Hints (weak_ptr<const Film> film)
: _film (film)
- , _thread (0)
, _long_ccap (false)
, _overlap_ccap (false)
, _too_many_ccap_lines (false)
void
Hints::start ()
{
- _thread = new boost::thread (bind(&Hints::thread, this));
+ _thread = boost::thread (bind(&Hints::thread, this));
}
Hints::~Hints ()
{
- if (!_thread) {
+ if (!_thread.joinable()) {
return;
}
try {
- {
- boost::mutex::scoped_lock lm (_mutex);
- _stop = true;
- }
- _thread->interrupt ();
- _thread->join ();
+ _stop = true;
+ _thread.interrupt ();
+ _thread.join ();
} catch (...) {
}
-
- delete _thread;
}
void
}
if (film->audio_channels() < 6) {
- hint (_("Your DCP has fewer than 6 audio channels. This may cause problems on some projectors."));
+ hint (_("Your DCP has fewer than 6 audio channels. This may cause problems on some projectors. You may want to set the DCP to have 6 channels. It does not matter if your content has fewer channels, as DCP-o-matic will fill the extras with silence."));
}
AudioProcessor const * ap = film->audio_processor();
struct timeval last_pulse;
gettimeofday (&last_pulse, 0);
- while (!player->pass()) {
+ try {
+ while (!player->pass()) {
- struct timeval now;
- gettimeofday (&now, 0);
- if ((seconds(now) - seconds(last_pulse)) > 1) {
- {
- boost::mutex::scoped_lock lm (_mutex);
+ struct timeval now;
+ gettimeofday (&now, 0);
+ if ((seconds(now) - seconds(last_pulse)) > 1) {
if (_stop) {
break;
}
+ emit (bind (boost::ref(Pulse)));
+ last_pulse = now;
}
- emit (bind (boost::ref(Pulse)));
- last_pulse = now;
}
+ } catch (...) {
+ store_current ();
}
emit (bind(boost::ref(Finished)));