Commit 580c278d authored by Wolfram Sang's avatar Wolfram Sang
Browse files

epson2: disable focus properly

The old epson driver disabled the focus by erasing the setFocus command.
The epson2 driver turned it into a seperate flag. However, scanners
which disabled focus in post_init were not converted to use the new
flag. Because we meanwhile set focus during init, these scanners could
not start anymore. Convert them to use the new flag.

While here, update the comment how we handle focus detection and update
the debug strings accordingly.

Bug reported by Hans Meir and debugged by Zdenek Dohnal. Many thanks!
parent 5819a79a
Pipeline #269759303 passed with stages
in 16 minutes
......@@ -291,14 +291,14 @@ e2_dev_post_init(struct Epson_Device *dev)
dev->need_reset_on_source_change = SANE_FALSE;
if (e2_dev_model(dev, "ES-9000H") || e2_dev_model(dev, "GT-30000")) {
dev->cmd->set_focus_position = 0;
dev->focusSupport = SANE_FALSE;
dev->cmd->feed = 0x19;
}
if (e2_dev_model(dev, "GT-8200") || e2_dev_model(dev, "Perfection1650")
|| e2_dev_model(dev, "Perfection1640") || e2_dev_model(dev, "GT-8700")) {
dev->focusSupport = SANE_FALSE;
dev->cmd->feed = 0;
dev->cmd->set_focus_position = 0;
dev->need_reset_on_source_change = SANE_TRUE;
}
......@@ -817,20 +817,17 @@ e2_discover_capabilities(Epson_Scanner *s)
DBG(1, "maximum supported color depth: %d\n", dev->maxDepth);
/*
* Check for "request focus position" command. If this command is
* supported, then the scanner does also support the "set focus
* position" command.
* XXX ???
* We assume that setting focus is supported when we can get the focus.
* This assumption may be overridden in e2_dev_post_init()
*/
if (esci_request_focus_position(s, &s->currentFocusPosition) ==
SANE_STATUS_GOOD) {
DBG(1, "setting focus is supported, current focus: %u\n", s->currentFocusPosition);
DBG(1, "getting focus is supported, current focus: %u\n", s->currentFocusPosition);
dev->focusSupport = SANE_TRUE;
s->opt[OPT_FOCUS_POS].cap &= ~SANE_CAP_INACTIVE;
s->val[OPT_FOCUS_POS].w = s->currentFocusPosition;
} else {
DBG(1, "setting focus is not supported\n");
DBG(1, "getting focus is not supported\n");
dev->focusSupport = SANE_FALSE;
s->opt[OPT_FOCUS_POS].cap |= SANE_CAP_INACTIVE;
s->val[OPT_FOCUS_POS].w = FOCUS_ON_GLASS; /* just in case */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment