Regularize the camera constant store singleton to use a function local static like most other singletons.

This commit is contained in:
Adam Reichold 2015-11-28 12:54:03 +01:00
parent ebe85388a3
commit 68271b9279
3 changed files with 7 additions and 14 deletions

View File

@ -683,29 +683,22 @@ CameraConstantsStore::CameraConstantsStore()
{ {
} }
static CameraConstantsStore *global_instance; void CameraConstantsStore::init(Glib::ustring baseDir, Glib::ustring userSettingsDir)
void CameraConstantsStore::initCameraConstants(Glib::ustring baseDir, Glib::ustring userSettingsDir)
{ {
if (global_instance) { parse_camera_constants_file(Glib::build_filename(baseDir, "camconst.json"));
// should only be called once during init.
abort();
}
global_instance = new CameraConstantsStore();
global_instance->parse_camera_constants_file(Glib::build_filename(baseDir, "camconst.json"));
Glib::ustring userFile(Glib::build_filename(userSettingsDir, "camconst.json")); Glib::ustring userFile(Glib::build_filename(userSettingsDir, "camconst.json"));
if (safe_file_test(userFile, Glib::FILE_TEST_EXISTS)) { if (safe_file_test(userFile, Glib::FILE_TEST_EXISTS)) {
global_instance->parse_camera_constants_file(userFile); parse_camera_constants_file(userFile);
} }
} }
CameraConstantsStore * CameraConstantsStore *
CameraConstantsStore::getInstance(void) CameraConstantsStore::getInstance(void)
{ {
return global_instance; static CameraConstantsStore instance_;
return &instance_;
} }
CameraConst * CameraConst *

View File

@ -54,7 +54,7 @@ private:
bool parse_camera_constants_file(Glib::ustring filename); bool parse_camera_constants_file(Glib::ustring filename);
public: public:
static void initCameraConstants(Glib::ustring baseDir, Glib::ustring userSettingsDir); void init(Glib::ustring baseDir, Glib::ustring userSettingsDir);
static CameraConstantsStore *getInstance(void); static CameraConstantsStore *getInstance(void);
CameraConst *get(const char make[], const char model[]); CameraConst *get(const char make[], const char model[]);
}; };

View File

@ -46,7 +46,7 @@ int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDi
dcpStore->init (baseDir + "/dcpprofiles"); dcpStore->init (baseDir + "/dcpprofiles");
CameraConstantsStore::initCameraConstants (baseDir, userSettingsDir); CameraConstantsStore::getInstance ()->init (baseDir, userSettingsDir);
profileStore.init (); profileStore.init ();
ProcParams::init (); ProcParams::init ();
Color::init (); Color::init ();