kopia lustrzana https://gitlab.com/sane-project/backends
gt68xx: added flag to fix stop scan bug
Some scanners (notably the Mustek 1248UB) doesn't like receiving a STOP scan command when it is not scanning. Flag prevents it my making sure that START/STOP commands are only ever paired up.merge-requests/540/head
rodzic
6886cf6e80
commit
42520aeaa9
|
@ -2329,14 +2329,7 @@ sane_cancel (SANE_Handle handle)
|
|||
/* some scanners don't like this command when cancelling a scan */
|
||||
sanei_usb_set_timeout (SHORT_TIMEOUT);
|
||||
gt68xx_device_fix_descriptor (s->dev);
|
||||
|
||||
// FIXME: Temporary sticking plaster fix for models that cannot scan after calling this
|
||||
// function to cancel. [RL]
|
||||
if (s->dev->model->command_set != &mustek_gt6816_command_set)
|
||||
{
|
||||
gt68xx_scanner_stop_scan (s);
|
||||
}
|
||||
|
||||
gt68xx_scanner_stop_scan (s);
|
||||
sanei_usb_set_timeout (LONG_TIMEOUT);
|
||||
|
||||
if (s->dev->model->flags & GT68XX_FLAG_SHEET_FED)
|
||||
|
|
|
@ -979,9 +979,11 @@ gt68xx_scanner_read_line (GT68xx_Scanner * scanner,
|
|||
SANE_Status
|
||||
gt68xx_scanner_stop_scan (GT68xx_Scanner * scanner)
|
||||
{
|
||||
gt68xx_line_reader_free (scanner->reader);
|
||||
scanner->reader = NULL;
|
||||
|
||||
if (scanner->reader)
|
||||
{
|
||||
gt68xx_line_reader_free (scanner->reader);
|
||||
scanner->reader = NULL;
|
||||
}
|
||||
return gt68xx_device_stop_scan (scanner->dev);
|
||||
}
|
||||
|
||||
|
|
|
@ -176,6 +176,8 @@ gt68xx_device_new (GT68xx_Device ** dev_return)
|
|||
|
||||
dev->manual_selection = SANE_FALSE;
|
||||
|
||||
dev->scan_started = SANE_FALSE;
|
||||
|
||||
#ifdef USE_FORK
|
||||
dev->shm_channel = NULL;
|
||||
#endif /* USE_FORK */
|
||||
|
@ -626,7 +628,14 @@ gt68xx_device_start_scan (GT68xx_Device * dev)
|
|||
{
|
||||
CHECK_DEV_ACTIVE (dev, "gt68xx_device_start_scan");
|
||||
if (dev->model->command_set->start_scan)
|
||||
return (*dev->model->command_set->start_scan) (dev);
|
||||
{
|
||||
if (!dev->scan_started)
|
||||
{
|
||||
dev->scan_started = SANE_TRUE;
|
||||
return (*dev->model->command_set->start_scan) (dev);
|
||||
}
|
||||
return SANE_STATUS_DEVICE_BUSY;
|
||||
}
|
||||
else
|
||||
return SANE_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
@ -681,7 +690,14 @@ gt68xx_device_stop_scan (GT68xx_Device * dev)
|
|||
{
|
||||
CHECK_DEV_ACTIVE (dev, "gt68xx_device_stop_scan");
|
||||
if (dev->model->command_set->stop_scan)
|
||||
return (*dev->model->command_set->stop_scan) (dev);
|
||||
{
|
||||
if (dev->scan_started)
|
||||
{
|
||||
dev->scan_started = SANE_FALSE;
|
||||
return (*dev->model->command_set->stop_scan) (dev);
|
||||
}
|
||||
return SANE_STATUS_GOOD; // Essentially a NOP.
|
||||
}
|
||||
else
|
||||
return SANE_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
|
|
@ -527,6 +527,8 @@ struct GT68xx_Device
|
|||
size_t read_bytes_left;
|
||||
SANE_Byte gray_mode_color;
|
||||
SANE_Bool manual_selection;
|
||||
SANE_Bool scan_started;
|
||||
|
||||
#ifdef USE_FORK
|
||||
Shm_Channel *shm_channel;
|
||||
pid_t reader_pid;
|
||||
|
|
Ładowanie…
Reference in New Issue