From 0f82af6930772a5c55e3e1222ff16a81669034bf Mon Sep 17 00:00:00 2001 From: Pierre Willenbrock Date: Fri, 17 Apr 2009 14:02:13 +0000 Subject: [PATCH] Fix reading/writing calib_channels to/from cache file, bad calib_pixels calculation. This fixes bugs introduced by my previous commit. --- ChangeLog | 1 + backend/genesys.c | 2 ++ backend/genesys_gl841.c | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2e4e494d..a41271316 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * backend/genesys.c, backend/genesys_gl646.c, backend/genesys_gl841.c, backend/genesys_low.h: Always do shading calibration in color mode on gl841. + * backend/genesys.c, backend/genesys_gl841.c: Fix bugs introduced above. 2009-04-16 Stéphane Voltz * backend/genesys.h backend/genesys.c backend/genesys_gl646.c diff --git a/backend/genesys.c b/backend/genesys.c index a23b6f4cb..75c4083f3 100644 --- a/backend/genesys.c +++ b/backend/genesys.c @@ -5477,6 +5477,7 @@ read_calibration(Genesys_Device * dev) /* the gamma (and later) fields are not stored */ BILT1(fread(&cache->sensor,offsetof(Genesys_Sensor,red_gamma),1,fp)); BILT1(fread(&cache->calib_pixels,sizeof(cache->calib_pixels),1,fp)); + BILT1(fread(&cache->calib_channels,sizeof(cache->calib_channels),1,fp)); BILT1(fread(&cache->average_size,sizeof(cache->average_size),1,fp)); /* Make sure we don't do bad things if someone feeds us a forged/ @@ -5555,6 +5556,7 @@ write_calibration(Genesys_Device * dev) /* the gamma (and later) fields are not stored */ fwrite(&cache->sensor,offsetof(Genesys_Sensor,red_gamma),1,fp); fwrite(&cache->calib_pixels,sizeof(cache->calib_pixels),1,fp); + fwrite(&cache->calib_channels,sizeof(cache->calib_channels),1,fp); fwrite(&cache->average_size,sizeof(cache->average_size),1,fp); fwrite(cache->white_average_data,cache->average_size,1,fp); fwrite(cache->dark_average_data,cache->average_size,1,fp); diff --git a/backend/genesys_gl841.c b/backend/genesys_gl841.c index 9e05f5908..2810865a0 100644 --- a/backend/genesys_gl841.c +++ b/backend/genesys_gl841.c @@ -4452,15 +4452,13 @@ gl841_init_regs_for_shading (Genesys_Device * dev) dev->model->shading_lines); dev->calib_channels = 3; - dev->calib_pixels = (dev->sensor.sensor_pixels * dev->settings.xres) / dev->sensor.optical_res; - status = gl841_init_scan_regs (dev, dev->calib_reg, dev->settings.xres, dev->motor.base_ydpi, 0, 0, - dev->calib_pixels, + (dev->sensor.sensor_pixels * dev->settings.xres) / dev->sensor.optical_res, dev->model->shading_lines, 16, dev->calib_channels, @@ -4473,6 +4471,8 @@ gl841_init_regs_for_shading (Genesys_Device * dev) SCAN_FLAG_USE_OPTICAL_RES ); + dev->calib_pixels = dev->current_setup.pixels; + if (status != SANE_STATUS_GOOD) { DBG (DBG_error,