[sane-devel] Developers take note: Backend initialization

Olaf Meeuwissen olaf.meeuwissen at avasys.jp
Wed Dec 8 01:00:12 UTC 2010

Hash: SHA1

On 2010-12-08 08:37, m. allan noah wrote:
> On Tue, Dec 7, 2010 at 6:04 PM, Olaf Meeuwissen wrote:
>> On 2010-12-07 22:32, m. allan noah wrote:
>>> On Tue, Dec 7, 2010 at 12:43 AM, Olaf Meeuwissen wrote:
>>> [...]
>>>> Backends can safely call sanei_usb_init() in both sane_init() and
>>>> sane_get_devices().  They should just move the device discovery logic to
>>>> sane_get_devices() and call that from sane_init() if they really still
>>>> want to do discovery at sane_init().
>>> Actually, since sane_init() calls are usually followed by
>>> sane_get_devices(), [...]
>> The problem is with "usually".  Backend maintainers have no guarantee
>> from the spec that frontends will do so.
> Certainly, but the 'usually' means than most of the time, the backend
> would search for devices in sane_init, and do it again a millisecond
> later in sane_get_devices.

I'm not a big fan of doing more than necessary, so suggest that all
sane_init() implementations refrain from doing device discovery.  That's
not the job of sane_init().
# I did say "if they really still want to" above ;-)

>> In the epkowa backend I also call sane_get_devices() in sane_open() if
>> it hasn't been called yet but that's just because I'm too lazy to:
>>  - decide what the first available device is in case of no device name
>>  - bother with validating the device name properly (it's easier to see
>> whether it's in the list)
> If its lazy but it works, it's not lazy :)

Laziness is one of the Programmer Virtues in some places ;-)

> So, lets consider my original request amended with this later
> suggestion- watch out for the case of a front-end which does not call
> sane_get_devices.

How about slapping backend maintainers with the spec an tell them to get
their act together ;-)

Hope this helps,
- -- 
Olaf Meeuwissen, LPIC-2           FLOSS Engineer -- AVASYS CORPORATION
FSF Associate Member #1962               Help support software freedom
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


More information about the sane-devel mailing list