Description: Fix timing issues on USB3 or fast recent hardware. Back-port from upstream. Author: Michael Thayer Origin: upstream, http://anonscm.debian.org/cgit/sane/sane-backends.git/commit/?id=09daef4a681e43a411b14389ceee9292ffbc29fc, http://anonscm.debian.org/cgit/sane/sane-backends.git/commit/?id=425edc705e6323353bf99f58c277dc4f0fe47deb Bug-Ubuntu: https://launchpad.net/bugs/1184699 Forwarded: not-needed Last-Update: 2015-08-21 --- sane-backends-1.0.25+git20150528.orig/backend/genesys_low.c +++ sane-backends-1.0.25+git20150528/backend/genesys_low.c @@ -943,13 +943,18 @@ sanei_genesys_get_triple(Genesys_Registe return SANE_STATUS_GOOD; } -/* Checks if the scan buffer is empty */ +/** @brief Check if the scanner's internal data buffer is empty + * @param *dev device to test for data + * @param *empty return value + * @return empty will be set to SANE_TRUE if there is no scanned data. + **/ SANE_Status sanei_genesys_test_buffer_empty (Genesys_Device * dev, SANE_Bool * empty) { uint8_t val = 0; SANE_Status status; + usleep(1000); status = sanei_genesys_get_status (dev, &val); if (status != SANE_STATUS_GOOD) { @@ -961,6 +966,10 @@ sanei_genesys_test_buffer_empty (Genesys if (dev->model->cmd_set->test_buffer_empty_bit (val)) { + /* fix timing issue on USB3 (or just may be too fast) hardware + * spotted by John S. Weber jweber53@gmail.com + */ + usleep(1000); DBG (DBG_io2, "sanei_genesys_test_buffer_empty: buffer is empty\n"); *empty = SANE_TRUE; return SANE_STATUS_GOOD;