[sane-devel] xscanimage handling for non-blocking fd
James A. Littlefield
jal@alum.mit.edu
Sun, 22 Aug 2004 18:14:05 -0400
I have run across another issue during DS3000 backend testing. When
using xscanimage if I let scans run to completion everything is fine.
If I use the "Cancel" button in the scan progress window the button
stays depressed, the scanner correctly aborts the scan and returns to
home, but the scan progress window remains open (with cancel button
depressed), and the main xscanimage window has the "Scan" button
disabled. This behavior occurs if I have the backend compiled to
support both sane_get_select_fd() and also sane_set_io_mode() with
non-blocking I/O support. If I recompile the chinon backend to
support only blocking io then the cancel feature works correctly.
After some poking around w/ gdb I have developed a theory that when the
scan is cancelled and the pipe between the reader_process and xscanimage
is closed this is causing an exception condition on the fd returned by
sane_get_select_fd(). Somehow this causes the event handling in
xscanimage to hang....
Has anyone seem similar behavior w/ other backends that support both the
select fd and non-blocking io? Any suggestions/tips appreciated.
Jim