From c2018e0dae9ed2503b6244a47524a7ce16eedb0b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 4 Jan 2015 13:54:15 +0000 Subject: Try to fix static initialisation order problems. --- src/colour_conversion.cc | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) (limited to 'src/colour_conversion.cc') diff --git a/src/colour_conversion.cc b/src/colour_conversion.cc index f2e85e76..5a2b1fd5 100644 --- a/src/colour_conversion.cc +++ b/src/colour_conversion.cc @@ -25,23 +25,38 @@ using boost::shared_ptr; using namespace dcp; -ColourConversion ColourConversion::srgb_to_xyz ( - shared_ptr (new ModifiedGammaTransferFunction (false, 2.4, 0.04045, 0.055, 12.92)), - dcp::colour_matrix::srgb_to_xyz, - shared_ptr (new GammaTransferFunction (true, 2.6)) - ); +ColourConversion const & +ColourConversion::srgb_to_xyz () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr (new ModifiedGammaTransferFunction (false, 2.4, 0.04045, 0.055, 12.92)), + dcp::colour_matrix::srgb_to_xyz, + shared_ptr (new GammaTransferFunction (true, 2.6)) + ); + return *c; +} -ColourConversion ColourConversion::xyz_to_srgb ( - shared_ptr (new GammaTransferFunction (false, 2.6)), - dcp::colour_matrix::xyz_to_rgb, - shared_ptr (new ModifiedGammaTransferFunction (true, 2.4, 0.04045, 0.055, 12.92)) - ); +ColourConversion const & +ColourConversion::xyz_to_srgb () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr (new GammaTransferFunction (false, 2.6)), + dcp::colour_matrix::xyz_to_rgb, + shared_ptr (new ModifiedGammaTransferFunction (true, 2.4, 0.04045, 0.055, 12.92)) + ); + return *c; +} -ColourConversion ColourConversion::rec709_to_xyz ( - shared_ptr (new ModifiedGammaTransferFunction (false, 2.4, 0.081, 0.099, 4.5)), - dcp::colour_matrix::srgb_to_xyz, - shared_ptr (new GammaTransferFunction (true, 2.6)) - ); +ColourConversion const & +ColourConversion::rec709_to_xyz () +{ + static ColourConversion* c = new ColourConversion ( + shared_ptr (new ModifiedGammaTransferFunction (false, 2.4, 0.081, 0.099, 4.5)), + dcp::colour_matrix::srgb_to_xyz, + shared_ptr (new GammaTransferFunction (true, 2.6)) + ); + return *c; +} ColourConversion::ColourConversion ( shared_ptr in, -- cgit v1.2.3