[sane-devel] [PATCH] Fix IO error in pixma_wait_interrupt

Rolf Bensch rolf at bensch-online.de
Thu May 3 16:49:36 UTC 2012


This patch works with my CS9000F. If there are no objections, I can 
commit this into git.

Cheers,
Rolf

Am 02.05.2012 22:55, schrieb Daniel Beer:
> I tested commit c4a287e3f28eab0ceb0ef8f0a1d17cb724ad612f with a Canon
> MP280 (Linux 2.6.38.5, libusb-0.1.12). scanimage -T failed with an IO
> error, which I traced to pixma_wait_interrupt().
>
> This function calls sanei_usb_read_int(). If no data is received, it
> returns SANE_STATUS_EOF, which maps to PIXMA_EOF, which is in turn
> treated as a fatal error in the calling function.
>
> With the following patch, the MP280 works pretty well. Occasionally an
> IO error occurs if you try to scan immediately after power-on
> ("warming up"?), but it always works on a retry.
>
> ---
>   backend/pixma_io_sanei.c |    3 ++-
>   1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/backend/pixma_io_sanei.c b/backend/pixma_io_sanei.c
> index 0a79bfa..06a6d0f 100644
> --- a/backend/pixma_io_sanei.c
> +++ b/backend/pixma_io_sanei.c
> @@ -567,7 +567,8 @@ pixma_wait_interrupt (pixma_io_t * io, void *buf, unsigned size, int timeout)
>   #endif
>         error = map_error (sanei_usb_read_int (io->dev, buf,&count));
>       }
> -  if (error == PIXMA_EIO)
> +  if (error == PIXMA_EIO ||
> +      (io->interface == INT_USB&&  error == PIXMA_EOF))
>       error = PIXMA_ETIMEDOUT;	/* FIXME: SANE doesn't have ETIMEDOUT!! */
>     if (error == 0)
>       error = count;



More information about the sane-devel mailing list