On 7/15/08, K?re S?rs <kare.sars at kolumbus.fi> wrote: > Hi again, > > > On Wednesdayen den 16 July 2008 02:02:36 K?re S?rs wrote: > > Hi, > > > > I'm a bit confused with the use of sane_cancel(). I noticed today that the > > pixma backend requires a sane_cancel after each scan (libksane did not work > > correctly with the pixma backend). I have read here on the list: > > "5. be aware that a proper front-end in batch mode will call > > sane_start() at the beginning of each page, but only call sane_cancel > > after the last page returns SANE_STATUS_NO_DOCS." > > > > Why does the frontend have to call sane_cancel() at the end of a scan? > > > > Is this a bug in the pixma backend (libksane works OK with at least the > > test, epson, epkowa and v4l backends), or is the pixma backend just more > > strict than the backends I have tested with before? (The problem was that > > the backend did not accept writes to any parameters after a scan without a > > cancel at the end.) > > > > I remember reading something about clarifying the use of sane_cancel() in > > the standard for 1.1, but I can't remember what it was about :) > > > > > Reading the standard again I see in 4.4 "Note that sane_cancel() must be > called even if the last read operation returned SANE_STATUS_EOF." > > But I'm still wondering why :)
sane_cancel should be called at the end of the batch, but not between pages, otherwise backends which buffer the backside of a duplex read will drop the image. this is an unfortunate historical accident, because sane_cancel serving a dual purpose worked fine for flatbed scanners that had no concept of a 'batch'. if pixma backend requires a call to sane_cancel after each page of a batch scan, it is broken, and wont work with scanimage -b allan -- "The truth is an offense, but not a sin"