From 3a90374d599c56a19155488d0ff312b776f77e7e Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 2 Apr 2017 10:35:19 +0200 Subject: [PATCH 1/2] Fixed handling of shadows/highlights in simpleprocess.cc (broken by the fast export refactoring) See issue #3793 --- rtengine/simpleprocess.cc | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index c49535a3c..2124ffb4d 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -55,6 +55,7 @@ public: tunnelMetaData(tunnelMetaData), flush(flush), // internal state + ipf_p(nullptr), ii(nullptr), imgsrc(nullptr), fw(-1), @@ -160,10 +161,11 @@ private: // MyTime t1,t2; // t1.set(); - ImProcFunctions ipf (¶ms, true); + ipf_p.reset(new ImProcFunctions(¶ms, true)); + ImProcFunctions &ipf = *(ipf_p.get()); pp = PreviewProps(0, 0, fw, fh, 1); - imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum); + imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum); imgsrc->preprocess( params.raw, params.lensProf, params.coarse, params.dirpyrDenoise.enabled); if (params.toneCurve.autoexp) {// this enabled HLRecovery @@ -733,7 +735,8 @@ private: void stage_denoise() { procparams::ProcParams& params = job->pparams; - ImProcFunctions ipf (¶ms, true); + //ImProcFunctions ipf (¶ms, true); + ImProcFunctions &ipf = *(ipf_p.get()); // perform luma/chroma denoise // CieImage *cieView; @@ -797,7 +800,8 @@ private: void stage_transform() { procparams::ProcParams& params = job->pparams; - ImProcFunctions ipf (¶ms, true); + //ImProcFunctions ipf (¶ms, true); + ImProcFunctions &ipf = *(ipf_p.get()); imgsrc->convertColorSpace(baseImg, params.icm, currWB); @@ -819,7 +823,8 @@ private: Image16 *stage_finish() { procparams::ProcParams& params = job->pparams; - ImProcFunctions ipf (¶ms, true); + //ImProcFunctions ipf (¶ms, true); + ImProcFunctions &ipf = *(ipf_p.get()); if (params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { const int W = baseImg->getWidth(); @@ -1344,7 +1349,8 @@ private: void stage_early_resize() { procparams::ProcParams& params = job->pparams; - ImProcFunctions ipf (¶ms, true); + //ImProcFunctions ipf (¶ms, true); + ImProcFunctions &ipf = *(ipf_p.get()); int imw, imh; double scale_factor = ipf.resizeScale(¶ms, fw, fh, imw, imh); @@ -1445,6 +1451,7 @@ private: bool flush; // internal state + std::unique_ptr ipf_p; InitialImage *ii; ImageSource *imgsrc; int fw; From de64d21b37d885353ca85d36c59ad2bbdcd5d9af Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 3 Apr 2017 13:58:15 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Crash=20when=20switching=20between=20raw=20?= =?UTF-8?q?and=20tif,=20fixes=20#3797.=20Thanks=20to=20Fl=C3=B6ssie=20for?= =?UTF-8?q?=20the=20patch!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtgui/toolpanelcoord.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index cacbee99d..7920b7a9b 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -311,6 +311,7 @@ ToolPanelCoordinator::~ToolPanelCoordinator () void ToolPanelCoordinator::imageTypeChanged(bool isRaw, bool isBayer, bool isXtrans) { + GThreadLock lock; if(isRaw) { rawPanelSW->set_sensitive(true);