From 38075be8cc5682e73bb59ddd6f784c125a401f99 Mon Sep 17 00:00:00 2001 From: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com> Date: Sat, 15 May 2021 23:49:25 -0700 Subject: [PATCH] Fix thumbnail spot removal with dehaze & film neg. --- rtengine/dcrop.cc | 2 +- rtengine/improccoordinator.cc | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index d33a2e8d3..ed7ec2495 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -750,7 +750,7 @@ void Crop::update(int todo) parent->imgsrc->getImage(parent->currWB, tr, f, pp, params.toneCurve, params.raw); parent->imgsrc->convertColorSpace(f, params.icm, parent->currWB); - if (params.dirpyrDenoise.enabled || params.filmNegative.enabled) { + if (params.dirpyrDenoise.enabled || params.filmNegative.enabled || params.spot.enabled) { // copy the denoised crop int oy = trafy / skip; int ox = trafx / skip; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 4490f4ba0..3b0a17bcb 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -346,6 +346,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) RAWParams rp = params->raw; ColorManagementParams cmp = params->icm; LCurveParams lcur = params->labCurve; + bool spotsDone = false; if (!highDetailNeeded) { // if below 100% magnification, take a fast path @@ -609,6 +610,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) ipf.setScale(scale); imgsrc->getImage(currWB, tr, orig_prev, pp, params->toneCurve, params->raw); + + if ((todo & M_SPOT) && params->spot.enabled && !params->spot.entries.empty()) { + spotsDone = true; + PreviewProps pp(0, 0, fw, fh, scale); + ipf.removeSpots(orig_prev, imgsrc, params->spot.entries, pp, currWB, nullptr, tr); + } + denoiseInfoStore.valid = false; //ColorTemp::CAT02 (orig_prev, ¶ms) ; // printf("orig_prevW=%d\n scale=%d",orig_prev->width, scale); @@ -680,7 +688,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) oprevi = orig_prev; - if (todo & M_SPOT) { + if ((todo & M_SPOT) && !spotsDone) { if (params->spot.enabled && !params->spot.entries.empty()) { allocCache(spotprev); orig_prev->copyData(spotprev); @@ -694,10 +702,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } } if (spotprev) { - if (oprevi == orig_prev) { - oprevi = new Imagefloat(pW, pH); - } - spotprev->copyData(oprevi); + spotprev->copyData(orig_prev); } if ((todo & M_HDR) && (params->fattal.enabled || params->dehaze.enabled)) {