diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc index 80d73ea2e..e45a332e1 100644 --- a/rtengine/camconst.cc +++ b/rtengine/camconst.cc @@ -683,29 +683,22 @@ CameraConstantsStore::CameraConstantsStore() { } -static CameraConstantsStore *global_instance; - -void CameraConstantsStore::initCameraConstants(Glib::ustring baseDir, Glib::ustring userSettingsDir) +void CameraConstantsStore::init(Glib::ustring baseDir, Glib::ustring userSettingsDir) { - if (global_instance) { - // should only be called once during init. - abort(); - } - - global_instance = new CameraConstantsStore(); - global_instance->parse_camera_constants_file(Glib::build_filename(baseDir, "camconst.json")); + parse_camera_constants_file(Glib::build_filename(baseDir, "camconst.json")); Glib::ustring userFile(Glib::build_filename(userSettingsDir, "camconst.json")); if (safe_file_test(userFile, Glib::FILE_TEST_EXISTS)) { - global_instance->parse_camera_constants_file(userFile); + parse_camera_constants_file(userFile); } } CameraConstantsStore * CameraConstantsStore::getInstance(void) { - return global_instance; + static CameraConstantsStore instance_; + return &instance_; } CameraConst * diff --git a/rtengine/camconst.h b/rtengine/camconst.h index a591f09fe..b57c3fee9 100644 --- a/rtengine/camconst.h +++ b/rtengine/camconst.h @@ -54,7 +54,7 @@ private: bool parse_camera_constants_file(Glib::ustring filename); public: - static void initCameraConstants(Glib::ustring baseDir, Glib::ustring userSettingsDir); + void init(Glib::ustring baseDir, Glib::ustring userSettingsDir); static CameraConstantsStore *getInstance(void); CameraConst *get(const char make[], const char model[]); }; diff --git a/rtengine/init.cc b/rtengine/init.cc index acedd844f..9fa5c48ee 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -46,7 +46,7 @@ int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDi dcpStore->init (baseDir + "/dcpprofiles"); - CameraConstantsStore::initCameraConstants (baseDir, userSettingsDir); + CameraConstantsStore::getInstance ()->init (baseDir, userSettingsDir); profileStore.init (); ProcParams::init (); Color::init ();