Merge 1.0
authorCarl Hetherington <cth@carlh.net>
Sat, 28 Dec 2013 15:09:30 +0000 (15:09 +0000)
committerCarl Hetherington <cth@carlh.net>
Sat, 28 Dec 2013 15:09:30 +0000 (15:09 +0000)
ChangeLog
platform/osx/waf
src/lib/content.cc
src/lib/content.h
src/lib/film.cc
src/lib/film.h
src/lib/image_decoder.cc
src/lib/playlist.cc
src/lib/playlist.h
src/wx/content_menu.cc
src/wx/film_editor.cc

index 7feabc198f4db34f172bbb9c175ffeeeaf04bafb..c80ad2e6342806b13609daee421b9b6153f7667c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-28  Carl Hetherington  <cth@carlh.net>
+
+       * Fix failure to load films with missing still image content (#300).
+
 2013-12-27  Carl Hetherington  <cth@carlh.net>
 
        * Fix non-update of video information on changing DCP resolution (#299).
index dda678542235f37df7af9165a81b02816d02d1c2..851f96d45c1376edfb0886556e59a309e20579fc 100755 (executable)
@@ -9,5 +9,6 @@ export PKG_CONFIG_PATH=$DEPS/lib/pkgconfig:$ENV/lib/pkgconfig:/usr/lib/pkgconfig
 export LINKFLAGS="-L$ENV/lib"
 export CXXFLAGS="-I$ENV/include"
 export PATH=$PATH:$ENV/bin
+export MACOSX_DEPLOYMENT_TARGET=10.6
 ./waf $*
 
index 7db349617ec031964648b19f0c3387a332b12b55..fa0031abfe27c32bb539da792d7691136a8239b6 100644 (file)
@@ -232,7 +232,7 @@ Content::identifier () const
 }
 
 bool
-Content::path_valid () const
+Content::paths_valid () const
 {
        for (vector<boost::filesystem::path>::const_iterator i = _paths.begin(); i != _paths.end(); ++i) {
                if (!boost::filesystem::exists (*i)) {
index 1eee02e01463e434bd65acd3a1bac53bd7f72170..965b33b22b98d0ebf9a81d5166aa4623e8fdb763 100644 (file)
@@ -84,7 +84,7 @@ public:
                return _paths[i];
        }
        
-       bool path_valid () const;
+       bool paths_valid () const;
 
        /** @return MD5 digest of the content's file(s) */
        std::string digest () const {
index 8e93667d5e54ad1ccb7474257e6536ce97a1bd27..98b7bf6b90595589e48326b0157e40739ff92e17 100644 (file)
@@ -860,12 +860,6 @@ Film::best_video_frame_rate () const
        return _playlist->best_dcp_frame_rate ();
 }
 
-bool
-Film::content_paths_valid () const
-{
-       return _playlist->content_paths_valid ();
-}
-
 FrameRateChange
 Film::active_frame_rate_change (DCPTime t) const
 {
index a0ace99811005d5b93bffcffa6d7cbb039f7a539..f1564e83bece00051f16140df7f6c8bb435e6aa2 100644 (file)
@@ -114,7 +114,6 @@ public:
        DCPTime length () const;
        bool has_subtitles () const;
        OutputVideoFrame best_video_frame_rate () const;
-       bool content_paths_valid () const;
        FrameRateChange active_frame_rate_change (DCPTime) const;
 
        libdcp::KDM
index 9e90b5bc8317cccd5d46b4c36912fd6872653337..a5ca67e0d95856c4de867b4f5ea70a17a5dd7a6a 100644 (file)
@@ -54,7 +54,14 @@ ImageDecoder::pass ()
                return false;
        }
 
-       Magick::Image* magick_image = new Magick::Image (_image_content->path (_image_content->still() ? 0 : _video_position).string ());
+       Magick::Image* magick_image = 0;
+       boost::filesystem::path const path = _image_content->path (_image_content->still() ? 0 : _video_position);
+       try {
+               magick_image = new Magick::Image (path.string ());
+       } catch (...) {
+               throw OpenFileError (path);
+       }
+       
        libdcp::Size size (magick_image->columns(), magick_image->rows());
 
        _image.reset (new Image (PIX_FMT_RGB24, size, true));
index 9fc62f8be6e5345a1bebecca6d3cd9293e6712a2..4175de4c9ce89d4f4baf8b403e92dac1ffcb05d0 100644 (file)
@@ -406,15 +406,3 @@ Playlist::move_later (shared_ptr<Content> c)
        
        Changed ();
 }
-
-bool
-Playlist::content_paths_valid () const
-{
-       for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) {
-               if (!(*i)->path_valid ()) {
-                       return false;
-               }
-       }
-
-       return true;
-}
index a985bf93da07669795394e468d4c682c2d2ea3e2..35709f109d2bf4bb4cbcbd725f61bbce7f7bf3ae 100644 (file)
@@ -82,8 +82,6 @@ public:
 
        void repeat (ContentList, int);
 
-       bool content_paths_valid () const;
-
        mutable boost::signals2::signal<void ()> Changed;
        /** Third parameter is true if signals are currently being emitted frequently */
        mutable boost::signals2::signal<void (boost::weak_ptr<Content>, int, bool)> ContentChanged;
index 254109eb3c882083c52193abf816d8b04d8c871b..6372503d14db465069eb62b16ff010ad49dac0b8 100644 (file)
@@ -80,7 +80,7 @@ ContentMenu::popup (ContentList c, wxPoint p)
        
        _join->Enable (n > 1);
        
-       _find_missing->Enable (_content.size() == 1 && !_content.front()->path_valid ());
+       _find_missing->Enable (_content.size() == 1 && !_content.front()->paths_valid ());
        _remove->Enable (!_content.empty ());
        _parent->PopupMenu (_menu, p);
 }
index 1b39039290aad4bfdd9856847a0aff4775e2a459..1818fb451452233c196c534a7f996827d7a3b27d 100644 (file)
@@ -734,7 +734,7 @@ FilmEditor::setup_content ()
        ContentList content = _film->content ();
        for (ContentList::iterator i = content.begin(); i != content.end(); ++i) {
                int const t = _content->GetItemCount ();
-               bool const valid = (*i)->path_valid ();
+               bool const valid = (*i)->paths_valid ();
 
                string s = (*i)->summary ();
                if (!valid) {