From c2480ac0649aaa5af1540695e38e9b78a2ba18d5 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Thu, 9 Apr 2020 23:57:09 +0300 Subject: [PATCH] genesys: Simplify calculation of warmup success criteria --- backend/genesys/genesys.cpp | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp index 245aaa66e..280297f79 100644 --- a/backend/genesys/genesys.cpp +++ b/backend/genesys/genesys.cpp @@ -3430,7 +3430,6 @@ static void genesys_warmup_lamp(Genesys_Device* dev) unsigned seconds = 0; double first_average = 0; double second_average = 0; - int difference = 255; const auto& sensor = sanei_genesys_find_sensor_any(dev); @@ -3481,25 +3480,6 @@ static void genesys_warmup_lamp(Genesys_Device* dev) first_average /= total_pixels; second_average /= total_pixels; - if (dev->session.params.depth == 16) { - difference = static_cast(std::fabs(first_average - second_average)); - DBG(DBG_info, "%s: average = %.2f, diff = %.3f\n", __func__, - 100 * ((second_average) / (256 * 256)), - 100 * (difference / second_average)); - - if (second_average > (100 * 256) - && (difference / second_average) < 0.002) - break; - } else { - - DBG(DBG_info, "%s: average 1 = %.2f, average 2 = %.2f\n", __func__, first_average, - second_average); - /* if delta below 15/255 ~= 5.8%, lamp is considred warm enough */ - if (fabs (first_average - second_average) < 15 - && second_average > 55) - break; - } - if (DBG_LEVEL >= DBG_data) { sanei_genesys_write_pnm_file("gl_warmup1.pnm", first_line.data(), dev->session.params.depth, channels, @@ -3509,7 +3489,15 @@ static void genesys_warmup_lamp(Genesys_Device* dev) total_size / (lines * channels), lines); } - /* sleep another second before next loop */ + DBG(DBG_info, "%s: average 1 = %.2f, average 2 = %.2f\n", __func__, first_average, + second_average); + + if (second_average > 0 && + std::fabs(first_average - second_average) / second_average < 0.005) + { + break; + } + dev->interface->sleep_ms(1000); seconds++; } while (seconds < WARMUP_TIME);