Add FilmViewer::time_until_next_frame.
[dcpomatic.git] / src / wx / content_view.cc
index f2117fc20e5ff7f6f80619d77a99b653dc3c007d..1cdfbc00f8f4fb49d95a9594330404195d34695d 100644 (file)
@@ -39,10 +39,10 @@ using boost::shared_ptr;
 using boost::weak_ptr;
 using boost::optional;
 using boost::dynamic_pointer_cast;
+using namespace dcpomatic;
 
-ContentView::ContentView (wxWindow* parent, weak_ptr<Film> film)
+ContentView::ContentView (wxWindow* parent)
        : wxListCtrl (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_NO_HEADER)
-       , _film (film)
 {
        AppendColumn (wxT(""), wxLIST_FORMAT_LEFT, 80);
        /* type */
@@ -66,18 +66,13 @@ ContentView::selected () const
 void
 ContentView::update ()
 {
-       shared_ptr<Film> film = _film.lock ();
-       if (!film) {
-               return;
-       }
-
        using namespace boost::filesystem;
 
        DeleteAllItems ();
        _content.clear ();
        optional<path> dir = Config::instance()->player_content_directory();
-       if (!dir) {
-               return;
+       if (!dir || !boost::filesystem::is_directory(*dir)) {
+               dir = home_directory ();
        }
 
        wxProgressDialog progress (_("DCP-o-matic"), _("Reading content directory"));
@@ -89,13 +84,13 @@ ContentView::update ()
                try {
                        shared_ptr<Content> content;
                        if (is_directory(*i) && (is_regular_file(*i / "ASSETMAP") || is_regular_file(*i / "ASSETMAP.xml"))) {
-                               content.reset (new DCPContent(film, *i));
+                               content.reset (new DCPContent(*i));
                        } else if (i->path().extension() == ".mp4" || i->path().extension() == ".ecinema") {
-                               content = content_factory(film, *i).front();
+                               content = content_factory(*i).front();
                        }
 
                        if (content) {
-                               shared_ptr<ExamineContentJob> job(new ExamineContentJob(film, content));
+                               shared_ptr<ExamineContentJob> job(new ExamineContentJob(shared_ptr<Film>(), content));
                                jm->add (job);
                                jobs.push_back (job);
                        }
@@ -114,7 +109,7 @@ ContentView::update ()
                        }
                        return;
                }
-               dcpomatic_sleep (1);
+               dcpomatic_sleep_seconds (1);
        }
 
        /* Add content from successful jobs and report errors */
@@ -136,7 +131,7 @@ ContentView::add (shared_ptr<Content> content)
        wxListItem it;
        it.SetId(N);
        it.SetColumn(0);
-       DCPTime length = content->length_after_trim ();
+       DCPTime length = content->approximate_length ();
        int h, m, s, f;
        length.split (24, h, m, s, f);
        it.SetText(wxString::Format("%02d:%02d:%02d", h, m, s));
@@ -167,9 +162,3 @@ ContentView::get (string digest) const
 
        return shared_ptr<Content>();
 }
-
-void
-ContentView::set_film (weak_ptr<Film> film)
-{
-       _film = film;
-}