On Mon, Dec 1, 2008 at 10:23 PM, ABC <abc at telekom.ru> wrote: > First of all sanei_usb_init() is not designed to be used for rescanning > after any other sanei_usb functions is called. It is just initialization > and rescanning ability is not documented side effect. As stated in > documentation: "Call this before any other sanei_usb function". So don't > call it after. (This doesn't state it should be called just once, so we > could rescan before first device is opened.)
sanei_usb_init() will blast the existing info, and assign all new device indexes to whatever it finds. However, sanei_usb_init() is only called by backends in sane_init() and sane_get_devices(). A frontend will only call sane_init() once, so that is not a problem, and the sane standard says this about sane_get_devices(): The returned list is guaranteed to remain unchanged and valid until (a) another call to this function is performed or (b) a call to sane_exit() is performed. So, if you call sane_get_devices() twice, you cannot complain that any devices you have open don't work anymore. However, you have a valid point that most backends only call sanei_usb_init() in sane_init(), and I think that should change. allan -- "The truth is an offense, but not a sin"
