diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-10-25 23:52:42 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-10-25 23:52:42 +0100 |
| commit | e749511fb4839feaccc94d506fa13b89ab13a570 (patch) | |
| tree | 9076816deefe1737c0c0161e823d150e89cd493a /src/lib/video_content.cc | |
| parent | 9fb8582bec18471ed9f6e3feb71aca5d1c9e6d3f (diff) | |
Fix crash when signalling VideoContent during the constructor (hence indirectly causing shared_from_this to be called too early).
Diffstat (limited to 'src/lib/video_content.cc')
| -rw-r--r-- | src/lib/video_content.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 976bc3aa0..98c3d929a 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -65,7 +65,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f) , _video_frame_type (VIDEO_FRAME_TYPE_2D) , _scale (Config::instance()->default_scale ()) { - set_default_colour_conversion (); + set_default_colour_conversion (false); } VideoContent::VideoContent (shared_ptr<const Film> f, DCPTime s, ContentTime len) @@ -75,7 +75,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, DCPTime s, ContentTime len , _video_frame_type (VIDEO_FRAME_TYPE_2D) , _scale (Config::instance()->default_scale ()) { - set_default_colour_conversion (); + set_default_colour_conversion (false); } VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p) @@ -85,7 +85,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p) , _video_frame_type (VIDEO_FRAME_TYPE_2D) , _scale (Config::instance()->default_scale ()) { - set_default_colour_conversion (); + set_default_colour_conversion (false); } VideoContent::VideoContent (shared_ptr<const Film> f, cxml::ConstNodePtr node, int version) @@ -197,9 +197,16 @@ VideoContent::as_xml (xmlpp::Node* node) const } void -VideoContent::set_default_colour_conversion () +VideoContent::set_default_colour_conversion (bool signal) { - set_colour_conversion (PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion); + { + boost::mutex::scoped_lock lm (_mutex); + _colour_conversion = PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion; + } + + if (signal) { + signal_changed (VideoContentProperty::COLOUR_CONVERSION); + } } void |
