From 93f6bf89b94ef8bad093458bc3f701821522e9d4 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 13 Oct 2017 20:59:49 +0200 Subject: [PATCH] Multithreaded init phase, #4140 --- rtengine/init.cc | 61 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/rtengine/init.cc b/rtengine/init.cc index 41f599b01..6c1f4b98a 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -42,24 +42,65 @@ MyMutex* lcmsMutex = nullptr; int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDir, bool loadAll) { settings = s; - ProfileStore::getInstance()->init (loadAll); - ICCStore::getInstance()->init (s->iccDirectory, Glib::build_filename (baseDir, "iccprofiles"), loadAll); - DCPStore::getInstance()->init (Glib::build_filename (baseDir, "dcpprofiles"), loadAll); + ProcParams::init(); + PerceptualToneCurve::init(); + RawImageSource::init(); - CameraConstantsStore::getInstance ()->init (baseDir, userSettingsDir); - ProcParams::init (); - Color::init (); - PerceptualToneCurve::init (); - RawImageSource::init (); +#ifdef _OPENMP +#pragma omp parallel sections +#endif +{ +#ifdef _OPENMP +#pragma omp section +#endif +{ if (s->lensfunDbDirectory.empty() || Glib::path_is_absolute(s->lensfunDbDirectory)) { LFDatabase::init(s->lensfunDbDirectory); } else { LFDatabase::init(Glib::build_filename(baseDir, s->lensfunDbDirectory)); } +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + ProfileStore::getInstance()->init(loadAll); +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + ICCStore::getInstance()->init(s->iccDirectory, Glib::build_filename (baseDir, "iccprofiles"), loadAll); +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + DCPStore::getInstance()->init(Glib::build_filename (baseDir, "dcpprofiles"), loadAll); +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + CameraConstantsStore::getInstance()->init(baseDir, userSettingsDir); +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + dfm.init(s->darkFramesPath); +} +#ifdef _OPENMP +#pragma omp section +#endif +{ + ffm.init(s->flatFieldsPath); +} +} + + Color::init (); delete lcmsMutex; lcmsMutex = new MyMutex; - dfm.init( s->darkFramesPath ); - ffm.init( s->flatFieldsPath ); return 0; }