diff --git a/backend/genesys/device.h b/backend/genesys/device.h index 5c773f96e..8250eb526 100644 --- a/backend/genesys/device.h +++ b/backend/genesys/device.h @@ -100,6 +100,16 @@ struct MethodResolutions return *std::min_element(resolutions_x.begin(), resolutions_x.end()); } + unsigned get_nearest_resolution_x(unsigned resolution) const + { + return *std::min_element(resolutions_x.begin(), resolutions_x.end(), + [&](unsigned lhs, unsigned rhs) + { + return std::abs(static_cast(lhs) - static_cast(resolution)) < + std::abs(static_cast(rhs) - static_cast(resolution)); + }); + } + unsigned get_min_resolution_y() const { return *std::min_element(resolutions_y.begin(), resolutions_y.end()); diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index a05dbae36..a45bf6b91 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -1752,14 +1752,11 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se int* total_size) const { DBG_HELPER(dbg); - int dpihw; - int resolution; + (void) sensor; - /* setup scan */ - *channels=3; - resolution=600; - dpihw = sensor.get_register_hwdpi(resolution); - resolution=dpihw; + *channels=3; + unsigned resolution = dev->model->get_resolution_settings(dev->settings.scan_method) + .get_nearest_resolution_x(600); const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, *channels, dev->settings.scan_method);