ContentMenu::~ContentMenu ()
{
delete _menu;
+
+ BOOST_FOREACH (boost::signals2::connection& i, _job_connections) {
+ i.disconnect ();
+ }
}
void
shared_ptr<Job> j (new ExamineContentJob (film, content));
- _job_connection = j->Finished.connect (
- bind (
- &ContentMenu::maybe_found_missing,
- this,
- boost::weak_ptr<Job> (j),
- boost::weak_ptr<Content> (_content.front ()),
- boost::weak_ptr<Content> (content)
+ _job_connections.push_back (
+ j->Finished.connect (
+ bind (
+ &ContentMenu::maybe_found_missing,
+ this,
+ boost::weak_ptr<Job> (j),
+ boost::weak_ptr<Content> (_content.front ()),
+ boost::weak_ptr<Content> (content)
+ )
)
);
}
BOOST_FOREACH (shared_ptr<Content> i, _content) {
- film->examine_content (i);
+ JobManager::instance()->add (shared_ptr<Job> (new ExamineContentJob (film, i)));
}
}
shared_ptr<Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
- film->examine_content (dcp);
+ shared_ptr<Job> j (new ExamineContentJob (film, dcp));
+ _job_connections.push_back (
+ j->Finished.connect (bind (&ContentMenu::check_kdm_validity, this, weak_ptr<DCPContent> (dcp)))
+ );
+ JobManager::instance()->add (j);
}
d->Destroy ();
}
+void
+ContentMenu::check_kdm_validity (weak_ptr<DCPContent> wp)
+{
+ shared_ptr<DCPContent> dcp = wp.lock ();
+ if (!dcp) {
+ return;
+ }
+
+ if (dcp->needs_kdm ()) {
+ error_dialog (0, _("The KDM does not decrypt the DCP. Perhaps it is targeted at the wrong CPL."));
+ }
+}
+
void
ContentMenu::ov ()
{
dcp->add_ov (wx_to_std (d->GetPath ()));
shared_ptr<Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
- film->examine_content (dcp);
+ JobManager::instance()->add (shared_ptr<Job> (new ExamineContentJob (film, dcp)));
}
d->Destroy ();
dcp->set_cpl ((*i)->id ());
shared_ptr<Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
- film->examine_content (dcp);
+ JobManager::instance()->add (shared_ptr<Job> (new ExamineContentJob (film, dcp)));
}
class Film;
class Job;
+class DCPContent;
class ContentMenu : public boost::noncopyable
{
void remove ();
void maybe_found_missing (boost::weak_ptr<Job>, boost::weak_ptr<Content>, boost::weak_ptr<Content>);
void cpl_selected (wxCommandEvent& ev);
+ void check_kdm_validity (boost::weak_ptr<DCPContent> wp);
wxMenu* _menu;
wxMenu* _cpl_menu;
wxMenuItem* _choose_cpl;
wxMenuItem* _remove;
- boost::signals2::scoped_connection _job_connection;
+ std::list<boost::signals2::connection> _job_connections;
};
#endif