summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/hints.cc50
-rw-r--r--src/lib/hints.h3
-rw-r--r--src/wx/hints_dialog.cc13
-rw-r--r--src/wx/hints_dialog.h2
4 files changed, 31 insertions, 37 deletions
diff --git a/src/lib/hints.cc b/src/lib/hints.cc
index 6238aa991..a517470d5 100644
--- a/src/lib/hints.cc
+++ b/src/lib/hints.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2016-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -62,39 +62,29 @@ Hints::Hints (weak_ptr<const Film> film)
}
void
-Hints::stop_thread ()
+Hints::start ()
{
- if (_thread) {
- try {
- {
- boost::mutex::scoped_lock lm (_mutex);
- _stop = true;
- }
- _thread->interrupt ();
- _thread->join ();
- } catch (...) {
-
- }
-
- delete _thread;
- _thread = 0;
- }
+ _thread = new boost::thread (bind(&Hints::thread, this));
}
Hints::~Hints ()
{
- stop_thread ();
-}
+ if (!_thread) {
+ return;
+ }
-void
-Hints::start ()
-{
- stop_thread ();
- _long_ccap = false;
- _overlap_ccap = false;
- _too_many_ccap_lines = false;
- _stop = false;
- _thread = new boost::thread (bind(&Hints::thread, this));
+ try {
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _stop = true;
+ }
+ _thread->interrupt ();
+ _thread->join ();
+ } catch (...) {
+
+ }
+
+ delete _thread;
}
void
@@ -187,6 +177,10 @@ Hints::thread ()
hint (h);
}
+ if (film->video_frame_rate() > 30) {
+ hint (String::compose(_("You are set up for a DCP at a frame rate of %1. This frame rate is not supported by all projectors. You are advised to change the DCP frame rate to %2."), film->video_frame_rate(), film->video_frame_rate() / 2));
+ }
+
optional<double> lowest_speed_up;
optional<double> highest_speed_up;
BOOST_FOREACH (shared_ptr<const Content> i, content) {
diff --git a/src/lib/hints.h b/src/lib/hints.h
index 35e361842..6f0e533d4 100644
--- a/src/lib/hints.h
+++ b/src/lib/hints.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2016-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -45,7 +45,6 @@ public:
private:
void thread ();
- void stop_thread ();
void hint (std::string h);
void text (PlayerText text, TextType type, DCPTimePeriod period);
diff --git a/src/wx/hints_dialog.cc b/src/wx/hints_dialog.cc
index 18e8a6f9e..f8d03626f 100644
--- a/src/wx/hints_dialog.cc
+++ b/src/wx/hints_dialog.cc
@@ -40,7 +40,7 @@ using boost::dynamic_pointer_cast;
HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> film, bool ok)
: wxDialog (parent, wxID_ANY, _("Hints"))
, _film (film)
- , _hints (new Hints (film))
+ , _hints (0)
, _finished (false)
{
wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL);
@@ -82,11 +82,6 @@ HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> film, bool ok)
_film_content_change_connection = locked_film->ContentChange.connect (boost::bind (&HintsDialog::film_content_change, this, _1));
}
- _hints->Hint.connect (bind (&HintsDialog::hint, this, _1));
- _hints->Progress.connect (bind (&HintsDialog::progress, this, _1));
- _hints->Pulse.connect (bind (&HintsDialog::pulse, this));
- _hints->Finished.connect (bind (&HintsDialog::finished, this));
-
film_change (CHANGE_TYPE_DONE);
}
@@ -111,6 +106,12 @@ HintsDialog::film_change (ChangeType type)
_gauge->SetValue (0);
update ();
_finished = false;
+
+ _hints.reset (new Hints (_film));
+ _hints->Hint.connect (bind (&HintsDialog::hint, this, _1));
+ _hints->Progress.connect (bind (&HintsDialog::progress, this, _1));
+ _hints->Pulse.connect (bind (&HintsDialog::pulse, this));
+ _hints->Finished.connect (bind (&HintsDialog::finished, this));
_hints->start ();
}
diff --git a/src/wx/hints_dialog.h b/src/wx/hints_dialog.h
index 709587ac9..1fac9d11e 100644
--- a/src/wx/hints_dialog.h
+++ b/src/wx/hints_dialog.h
@@ -46,7 +46,7 @@ private:
wxGauge* _gauge;
wxStaticText* _gauge_message;
wxRichTextCtrl* _text;
- boost::shared_ptr<Hints> _hints;
+ boost::scoped_ptr<Hints> _hints;
std::list<std::string> _current;
bool _finished;