Vibrance causes RT to freeze, fixes #5346

This commit is contained in:
heckflosse 2019-06-05 12:55:08 +02:00
parent 4ff41f7a2c
commit 6486c491f8

View File

@ -612,6 +612,7 @@ void ImProcFunctions::vibrance (LabImage* lab)
const float fyy = Color::c1By116 * Lprov + Color::c16By116;
const float yy_ = (Lprov > Color::epskap) ? fyy * fyy*fyy : Lprov / Color::kappaf;
float ChprovOld = std::numeric_limits<float>::min();
do {
inGamut = true;
@ -625,10 +626,15 @@ void ImProcFunctions::vibrance (LabImage* lab)
hhModified = false;
}
}
aprovn = Chprov * sincosval.y;
bprovn = Chprov * sincosval.x;
if (Chprov == ChprovOld) { // avoid endless loop
break;
} else {
ChprovOld = Chprov;
}
float fxx = 0.002f * aprovn + fyy;
float fzz = fyy - 0.005f * bprovn;
float xx_ = Color::f2xyz(fxx) * Color::D50x;