From 7057a70babe50f2a0b9679234d94acc8e1c154f2 Mon Sep 17 00:00:00 2001 From: Desmis Date: Mon, 21 Nov 2022 18:28:56 +0100 Subject: [PATCH] Try to fix bug when using CBDL main and Local Sharpening (#6611) * Work around to fix bug when using CBDL main and Local Sharpening * Optimization int replace by bool sharplablocal * Try to fix bug by using shardamping > 0 in LA --- rtengine/improccoordinator.cc | 9 +++++++++ rtengine/simpleprocess.cc | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 9eb7043d1..8d377d30c 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -731,6 +731,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) // Remove transformation if unneeded bool needstransform = ipf.needsTransform(fw, fh, imgsrc->getRotateDegree(), imgsrc->getMetaData()); + if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled))) { // Forking the image assert(oprevi); @@ -745,6 +746,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } } + for (int sp = 0; sp < (int)params->locallab.spots.size(); sp++) { + if(params->locallab.spots.at(sp).expsharp && params->dirpyrequalizer.cbdlMethod == "bef") { + if(params->locallab.spots.at(sp).shardamping < 1) { + params->locallab.spots.at(sp).shardamping = 1; + } + } + } + if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled && !params->colorappearance.enabled) { const int W = oprevi->getWidth(); const int H = oprevi->getHeight(); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 6e75635cf..c542cf726 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -924,6 +924,14 @@ private: //ImProcFunctions ipf (¶ms, true); ImProcFunctions &ipf = * (ipf_p.get()); + for (int sp = 0; sp < (int)params.locallab.spots.size(); sp++) { + if(params.locallab.spots.at(sp).expsharp && params.dirpyrequalizer.cbdlMethod == "bef") { + if(params.locallab.spots.at(sp).shardamping < 1) { + params.locallab.spots.at(sp).shardamping = 1; + } + } + } + if (params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { const int W = baseImg->getWidth(); const int H = baseImg->getHeight();