[sane-devel] [PATCH] Fix ADF scanning for Canon MF57x0 devices

Rolf Bensch rolf at bensch-online.de
Wed Oct 5 18:15:34 UTC 2016


Hello Dmitry,

I just pushed your patch to SANEs git repository.

The MF5750 still has the status untested. Have you also tested this
device or can you confirm that this device is working?

Many thanks for your help.

Cheers,
Rolf

Am 30.09.2016 um 15:38 schrieb Dmitry Deshevoy:
> Canon MF57x0 devices require abort_session() after each page except
> the last one.
> The result from calibrate() should be ignored, so that scanning is not
> interrupted with PIXMA_STATUS_BUSY.
> ---
>  backend/pixma_mp730.c | 31 ++++++++++++++++++-------------
>  1 file changed, 18 insertions(+), 13 deletions(-)
>
> diff --git a/backend/pixma_mp730.c b/backend/pixma_mp730.c
> index 06bc9ee..b0692e4 100644
> --- a/backend/pixma_mp730.c
> +++ b/backend/pixma_mp730.c
> @@ -459,6 +459,8 @@ step1 (pixma_t * s)
>            default:
>              break;
>          }
> +
> +      error = 0;
>      }
>    if (error >= 0)
>      error = activate (s, 0);
> @@ -747,19 +749,22 @@ mp730_finish_scan (pixma_t * s)
>        query_status (s);
>        activate (s, 0);
>
> -      if (! aborted && s->cfg->pid == IR1020_PID)
> - {
> -  error = abort_session (s);
> -  if (error < 0)
> -    {
> -      PDBG (pixma_dbg
> -    (1, "WARNING:abort_session() failed %s\n",
> -     pixma_strerror (error)));
> -      query_status (s);
> -      query_status (s);
> -      activate (s, 0);
> -    }
> - }
> +      if (!aborted &&
> +          (s->param->source == PIXMA_SOURCE_ADF ||
> +           s->param->source == PIXMA_SOURCE_ADFDUP) &&
> +          has_paper (s) &&
> +          (s->cfg->pid == MF5730_PID ||
> +           s->cfg->pid == MF5750_PID ||
> +           s->cfg->pid == MF5770_PID ||
> +           s->cfg->pid == IR1020_PID))
> +        {
> +          error = abort_session (s);
> +          if (error < 0)
> +            PDBG (pixma_dbg
> +                  (1, "WARNING:abort_session() failed %s\n",
> +                   pixma_strerror (error)));
> +        }
> +
>        mp->buf = mp->lbuf = mp->imgbuf = NULL;
>        mp->state = state_idle;
>        /* fall through */





More information about the sane-devel mailing list