Merge pull request #2994 from adamreichold/improve-singletons
Continue to simplify and improve singletons
This commit is contained in:
@@ -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 *
|
||||
|
@@ -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[]);
|
||||
};
|
||||
|
@@ -1691,18 +1691,8 @@ void DCPProfile::step2ApplyTile(float *rc, float *gc, float *bc, int width, int
|
||||
// Generates as singleton
|
||||
DCPStore* DCPStore::getInstance()
|
||||
{
|
||||
static DCPStore* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new DCPStore();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static DCPStore instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
// Reads all profiles from the given profiles dir
|
||||
|
@@ -192,18 +192,8 @@ ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
|
||||
ICCStore*
|
||||
ICCStore::getInstance(void)
|
||||
{
|
||||
static ICCStore* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new ICCStore();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static ICCStore instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
ICCStore::ICCStore ()
|
||||
|
@@ -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 ();
|
||||
|
@@ -781,18 +781,8 @@ void XMLCALL LCPProfile::XmlEndHandler(void *pLCPProfile, const char *el)
|
||||
// Generates as singleton
|
||||
LCPStore* LCPStore::getInstance()
|
||||
{
|
||||
static LCPStore* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new LCPStore();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static LCPStore instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
LCPProfile* LCPStore::getProfile (Glib::ustring filename)
|
||||
|
@@ -30,18 +30,8 @@
|
||||
CacheManager*
|
||||
CacheManager::getInstance(void)
|
||||
{
|
||||
static CacheManager* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new CacheManager();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static CacheManager instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
void CacheManager::init ()
|
||||
|
@@ -24,8 +24,6 @@
|
||||
#include "rtimage.h"
|
||||
#include "threadutils.h"
|
||||
|
||||
static EditWindow* editWnd = NULL;
|
||||
|
||||
// Check if the system has more than one display and option is set
|
||||
bool EditWindow::isMultiDisplayEnabled()
|
||||
{
|
||||
@@ -35,29 +33,26 @@ bool EditWindow::isMultiDisplayEnabled()
|
||||
// Should only be created once, auto-creates window on correct display
|
||||
EditWindow* EditWindow::getInstance(RTWindow* p)
|
||||
{
|
||||
struct EditWindowInstance
|
||||
{
|
||||
EditWindow editWnd;
|
||||
|
||||
if (editWnd == NULL) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( editWnd == 0 ) {
|
||||
editWnd = new EditWindow(p);
|
||||
|
||||
EditWindowInstance(RTWindow* p) : editWnd(p)
|
||||
{
|
||||
// Determine the other display and maximize the window on that
|
||||
const Glib::RefPtr< Gdk::Window >& wnd = p->get_window();
|
||||
int monNo = p->get_screen()->get_monitor_at_window (wnd);
|
||||
|
||||
Gdk::Rectangle lMonitorRect;
|
||||
editWnd->get_screen()->get_monitor_geometry(isMultiDisplayEnabled() ? (monNo == 0 ? 1 : 0) : monNo, lMonitorRect);
|
||||
editWnd->move(lMonitorRect.get_x(), lMonitorRect.get_y());
|
||||
editWnd->maximize();
|
||||
editWnd->show();
|
||||
} else {
|
||||
editWnd->show_all();
|
||||
editWnd.get_screen()->get_monitor_geometry(isMultiDisplayEnabled() ? (monNo == 0 ? 1 : 0) : monNo, lMonitorRect);
|
||||
editWnd.move(lMonitorRect.get_x(), lMonitorRect.get_y());
|
||||
editWnd.maximize();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return editWnd;
|
||||
static EditWindowInstance instance_(p);
|
||||
instance_.editWnd.show_all();
|
||||
return &instance_.editWnd;
|
||||
}
|
||||
|
||||
EditWindow::EditWindow (RTWindow* p) : parent(p) , isFullscreen(false)
|
||||
|
@@ -74,18 +74,8 @@ bool ExtProgAction::Execute(std::vector<Glib::ustring> fileNames)
|
||||
// Generates as singleton
|
||||
ExtProgStore* ExtProgStore::getInstance()
|
||||
{
|
||||
static ExtProgStore* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new ExtProgStore();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static ExtProgStore instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
ExtProgStore::~ExtProgStore()
|
||||
|
@@ -168,19 +168,8 @@ PreviewLoader::PreviewLoader():
|
||||
|
||||
PreviewLoader* PreviewLoader::getInstance(void)
|
||||
{
|
||||
// this will not be deleted...
|
||||
static PreviewLoader* instance_ = NULL;
|
||||
|
||||
if ( instance_ == NULL ) {
|
||||
static MyMutex smutex_;
|
||||
MyMutex::MyLock lock(smutex_);
|
||||
|
||||
if ( instance_ == NULL ) {
|
||||
instance_ = new PreviewLoader();
|
||||
}
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static PreviewLoader instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
void PreviewLoader::add(int dir_id, const Glib::ustring& dir_entry, PreviewLoaderListener* l)
|
||||
|
@@ -192,14 +192,8 @@ public:
|
||||
ThumbImageUpdater*
|
||||
ThumbImageUpdater::getInstance(void)
|
||||
{
|
||||
// this will not be deleted...
|
||||
static ThumbImageUpdater* instance_ = 0;
|
||||
|
||||
if ( instance_ == 0 ) {
|
||||
instance_ = new ThumbImageUpdater();
|
||||
}
|
||||
|
||||
return instance_;
|
||||
static ThumbImageUpdater instance_;
|
||||
return &instance_;
|
||||
}
|
||||
|
||||
ThumbImageUpdater::ThumbImageUpdater():
|
||||
|
Reference in New Issue
Block a user