>> Hmm... and the more I look at this, the less I understand what the >> SANE_STATUS_INVAL case is for. (The microtek backend is blocking-mode >> exclusively, so I've never really dealt with this....) What does >> "image acquistion is pending" mean? Is that before or after sane_start() >> has been called? > >sane_set_io_mode must be used after sane_start (and before sane_cancel).
It doesn't seem very intuitive to me, but as long as that is the way it is, that should also be explicitly stated in Section 4.3.12 (the description of sane_set_io_mode()). Is the SANE-2 draft online anywhere? I don't see any link to it on the SANE website. I just got the crazy idea that maybe all of the blocking/ non-blocking IO mode stuff should be removed from the next version of the standard. It seems a bit silly and bloated to have so many backends re-implementing the same functionality of forking a process to decouple their I/O, when it could be written once in the frontend -- especially since there are so many more backends than frontends. This would also allow the frontend author to do a much better job of optimizing the flow and/or memory useage, since she knows exactly where she wants the data to go, and can avoid an extra trip through a pipe, etc. Just an idea... -matt m.