kopia lustrzana https://gitlab.com/sane-project/backends
XPA support fixes
rodzic
7e95fd8365
commit
598d3c82ba
|
@ -3297,7 +3297,7 @@ gl646_init_regs_for_scan (Genesys_Device * dev)
|
||||||
SANE_Status status;
|
SANE_Status status;
|
||||||
|
|
||||||
/* park head after calibration if needed */
|
/* park head after calibration if needed */
|
||||||
if (dev->scanhead_position_in_steps > 0)
|
if (dev->scanhead_position_in_steps > 0 && settings.scan_method==SCAN_METHOD_FLATBED)
|
||||||
{
|
{
|
||||||
status = gl646_slow_back_home (dev, SANE_TRUE);
|
status = gl646_slow_back_home (dev, SANE_TRUE);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
|
@ -4237,7 +4237,7 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
|
||||||
float average[3];
|
float average[3];
|
||||||
Genesys_Settings settings;
|
Genesys_Settings settings;
|
||||||
char title[32];
|
char title[32];
|
||||||
SANE_Bool move=SANE_TRUE;
|
SANE_Bool move=SANE_FALSE;
|
||||||
|
|
||||||
if (dev->model->ccd_type == CIS_XP200)
|
if (dev->model->ccd_type == CIS_XP200)
|
||||||
{
|
{
|
||||||
|
@ -4272,12 +4272,14 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
|
||||||
settings.tl_y = 0;
|
settings.tl_y = 0;
|
||||||
settings.pixels =
|
settings.pixels =
|
||||||
(dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
|
(dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
|
||||||
|
move=SANE_FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
settings.tl_x = (dev->model->x_offset_ta * resolution) / dev->sensor.optical_res;
|
settings.tl_x = (SANE_UNFIX(dev->model->x_offset_ta) * resolution) / MM_PER_INCH;
|
||||||
settings.tl_y = (dev->model->y_offset_calib_ta * resolution) / dev->sensor.optical_res;
|
settings.tl_y = (SANE_UNFIX(dev->model->y_offset_calib_ta) * resolution) / MM_PER_INCH;
|
||||||
settings.pixels = (dev->model->x_size_ta * resolution) / dev->sensor.optical_res;
|
settings.pixels = (SANE_UNFIX(dev->model->x_size_ta) * resolution) / MM_PER_INCH;
|
||||||
|
move=SANE_TRUE;
|
||||||
}
|
}
|
||||||
settings.lines = CALIBRATION_LINES;
|
settings.lines = CALIBRATION_LINES;
|
||||||
settings.depth = 8;
|
settings.depth = 8;
|
||||||
|
@ -4864,8 +4866,10 @@ simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
|
||||||
{
|
{
|
||||||
SANE_Status status = SANE_STATUS_INVAL;
|
SANE_Status status = SANE_STATUS_INVAL;
|
||||||
unsigned int size, lines, x, y, bpp;
|
unsigned int size, lines, x, y, bpp;
|
||||||
SANE_Bool empty;
|
SANE_Bool empty, split;
|
||||||
unsigned char *buffer;
|
unsigned char *buffer;
|
||||||
|
int count;
|
||||||
|
u_int8_t val;
|
||||||
|
|
||||||
DBG (DBG_proc, "simple_scan: starting\n");
|
DBG (DBG_proc, "simple_scan: starting\n");
|
||||||
DBG (DBG_io, "simple_scan: move=%d, forward=%d, shading=%d\n",move,forward,shading);
|
DBG (DBG_io, "simple_scan: move=%d, forward=%d, shading=%d\n",move,forward,shading);
|
||||||
|
@ -4876,7 +4880,16 @@ simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
|
||||||
settings.lines = ((settings.lines + 2) / 3) * 3;
|
settings.lines = ((settings.lines + 2) / 3) * 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = setup_for_scan (dev, settings, SANE_TRUE, SANE_FALSE, SANE_FALSE);
|
/* setup for move then scan */
|
||||||
|
if(move==SANE_TRUE && settings.tl_y >0)
|
||||||
|
{
|
||||||
|
split=SANE_FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
split=SANE_TRUE;
|
||||||
|
}
|
||||||
|
status = setup_for_scan (dev, settings, split, SANE_FALSE, SANE_FALSE);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
{
|
{
|
||||||
DBG (DBG_error, "simple_scan: setup_for_scan failed (%s)\n",
|
DBG (DBG_error, "simple_scan: setup_for_scan failed (%s)\n",
|
||||||
|
@ -4981,17 +4994,26 @@ simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* wait for buffers to be filled */
|
/* wait for buffers to be filled */
|
||||||
|
count=0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
usleep (10000UL);
|
usleep (10000UL);
|
||||||
RIE (sanei_genesys_get_status (dev, &empty));
|
RIE (sanei_genesys_get_status (dev, &val));
|
||||||
if (DBG_LEVEL > DBG_info)
|
if (DBG_LEVEL > DBG_info)
|
||||||
{
|
{
|
||||||
print_status (empty);
|
print_status (val);
|
||||||
}
|
}
|
||||||
RIE (sanei_genesys_test_buffer_empty (dev, &empty));
|
RIE (sanei_genesys_test_buffer_empty (dev, &empty));
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
while (empty && count <1000);
|
||||||
|
if(count==1000)
|
||||||
|
{
|
||||||
|
free (*data);
|
||||||
|
DBG (DBG_error,
|
||||||
|
"simple_scan: failed toread data\n");
|
||||||
|
return SANE_STATUS_IO_ERROR;
|
||||||
}
|
}
|
||||||
while (empty);
|
|
||||||
|
|
||||||
/* now we're on target, we can read data */
|
/* now we're on target, we can read data */
|
||||||
status = sanei_genesys_read_data_from_scanner (dev, *data, size);
|
status = sanei_genesys_read_data_from_scanner (dev, *data, size);
|
||||||
|
@ -5360,14 +5382,18 @@ gl646_is_compatible_calibration (Genesys_Device * dev,
|
||||||
((dev->current_setup.channels == cache->used_setup.channels)
|
((dev->current_setup.channels == cache->used_setup.channels)
|
||||||
&& (((int) dev->current_setup.xres) ==
|
&& (((int) dev->current_setup.xres) ==
|
||||||
((int) cache->used_setup.xres)));
|
((int) cache->used_setup.xres)));
|
||||||
if(dev->current_setup.scan_method != cache->used_setup.scan_method)
|
|
||||||
compatible = SANE_STATUS_UNSUPPORTED;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
compatible =
|
compatible =
|
||||||
(dev->current_setup.channels == cache->used_setup.channels);
|
(dev->current_setup.channels == cache->used_setup.channels);
|
||||||
}
|
}
|
||||||
|
if(dev->current_setup.scan_method != cache->used_setup.scan_method)
|
||||||
|
{
|
||||||
|
DBG (DBG_io, "gl646_is_compatible_calibration: current method=%d, used=%d\n",
|
||||||
|
dev->current_setup.scan_method, cache->used_setup.scan_method);
|
||||||
|
compatible = SANE_STATUS_UNSUPPORTED;
|
||||||
|
}
|
||||||
if (!compatible)
|
if (!compatible)
|
||||||
{
|
{
|
||||||
DBG (DBG_proc,
|
DBG (DBG_proc,
|
||||||
|
|
Ładowanie…
Reference in New Issue