Fix assertion failure on making a VF, in certain circumstances.
[dcpomatic.git] / src / lib / dcp_content.cc
index 8a2e2050d295547320ca9f4def69aee4eb3fb268..ef877a17fbd438d2159400190ebc91a185774597 100644 (file)
@@ -191,7 +191,6 @@ DCPContent::examine (shared_ptr<const Film> film, shared_ptr<Job> job)
        ChangeSignaller<Content> cc_assets (this, DCPContentProperty::NEEDS_ASSETS);
        ChangeSignaller<Content> cc_kdm (this, DCPContentProperty::NEEDS_KDM);
        ChangeSignaller<Content> cc_name (this, DCPContentProperty::NAME);
-       ChangeSignaller<Content> cc_streams (this, AudioContentProperty::STREAMS);
 
        if (job) {
                job->set_progress_unknown ();
@@ -210,7 +209,6 @@ DCPContent::examine (shared_ptr<const Film> film, shared_ptr<Job> job)
        }
 
        if (examiner->has_audio()) {
-               ChangeSignaller<Content> cc (this, AudioContentProperty::STREAMS);
                {
                        boost::mutex::scoped_lock lm (_mutex);
                        audio.reset (new AudioContent (this));
@@ -227,7 +225,7 @@ DCPContent::examine (shared_ptr<const Film> film, shared_ptr<Job> job)
                boost::mutex::scoped_lock lm (_mutex);
                _name = examiner->name ();
                for (int i = 0; i < TEXT_COUNT; ++i) {
-                       if (examiner->has_text(static_cast<TextType>(i))) {
+                       for (int j = 0; j < examiner->text_count(static_cast<TextType>(i)); ++j) {
                                text.push_back (shared_ptr<TextContent>(new TextContent(this, static_cast<TextType>(i), static_cast<TextType>(i))));
                        }
                }
@@ -549,10 +547,10 @@ DCPContent::can_reference (shared_ptr<const Film> film, function<bool (shared_pt
        list<DCPTimePeriod> reel_list;
        try {
                reel_list = reels (film);
-       } catch (dcp::DCPReadError) {
+       } catch (dcp::DCPReadError &) {
                /* We couldn't read the DCP; it's probably missing */
                return false;
-       } catch (dcp::KDMDecryptionError) {
+       } catch (dcp::KDMDecryptionError &) {
                /* We have an incorrect KDM */
                return false;
        }
@@ -627,13 +625,13 @@ DCPContent::can_reference_audio (shared_ptr<const Film> film, string& why_not) c
        shared_ptr<DCPDecoder> decoder;
        try {
                decoder.reset (new DCPDecoder (film, shared_from_this(), false));
-       } catch (dcp::DCPReadError) {
+       } catch (dcp::DCPReadError &) {
                /* We couldn't read the DCP, so it's probably missing */
                return false;
-       } catch (DCPError) {
+       } catch (DCPError &) {
                /* We couldn't read the DCP, so it's probably missing */
                return false;
-       } catch (dcp::KDMDecryptionError) {
+       } catch (dcp::KDMDecryptionError &) {
                /* We have an incorrect KDM */
                return false;
        }
@@ -662,11 +660,10 @@ DCPContent::can_reference_text (shared_ptr<const Film> film, TextType type, stri
        shared_ptr<DCPDecoder> decoder;
        try {
                decoder.reset (new DCPDecoder (film, shared_from_this(), false));
-       } catch (dcp::DCPReadError) {
-
+       } catch (dcp::DCPReadError &) {
                /* We couldn't read the DCP, so it's probably missing */
                return false;
-       } catch (dcp::KDMDecryptionError) {
+       } catch (dcp::KDMDecryptionError &) {
                /* We have an incorrect KDM */
                return false;
        }