[sane-devel] Proposal: SANE standard additions/fixes
Henning Meier-Geinitz
henning at meier-geinitz.de
Thu Oct 10 17:07:14 BST 2002
Hi,
On Sun, Oct 06, 2002 at 01:01:52PM -0400, Matto Marjanovic wrote:
> >2) Concerning sane_get_select_fd: It's not that easy to implement the
> > select fd correctly in frontends and backends. For frontends the
> > problem is, that not only the readable status has to be cheked but
> > also if the fd was closed. E.g. using a gdk_input will not work
> > because it won't detect the closing of the file descriptor by the
> > backend and waits forever.
> >
> > So if you use select you have to check the return value of select
> > if the fd was closed (that means EOF in the next call to SANE_READ)
> > and so you can call sane_cancel. If no error occured, check if the
> > fd is readable. If yes, run sane_read, otherwise wait.
> >
> > Maybe we can add a "frontend implementation note" for that one.
> > I don't know how to write this exactly, maybe Oliver?
>
> Well, I was the guy who thought it might be a good idea to get rid of this
> mode of operation altogether, so I'm not the best one to comment. (Feel
> free to skip ahead; somehow it turned into thoughts on the semantics of
> sane_cancel(), until (e) and (f)....)
I'm also not sure if that mode is really necessary but changing that
is for SANE2. Maybe it makes sense for networking/saned?
> The standard does seem to be unclear on what happens when sane_cancel()
> is called:
>
> a) If you are in the middle of another sane call, and sane_cancel() is
> called (via a signal handler), the spec is clear: the scan is officially
> cancelled once the current call returns with SANE_CANCELLED.
True.
> b) If you are *not* in the middle of another sane call, what happens?
> If I call sane_cancel() in between calls to sane_read(), is the scan
> cancelled immediately upon returning from sane_cancel(), or are you
> allowed or required to call sane_read() once more so that you get a
> return value of SANE_CANCELLED?
More information about the sane-devel
mailing list