sane-backends/avision.c.patch
OBS User mrdocs dec28456dd Accepting request 199164 from home:pinysuse:branches:graphics
As described in <https://bugzilla.novell.com/show_bug.cgi?id=840443> - when operating on a hp scanjet 8200 - the avision driver gets stuck in a loop trying to detect an ADF, even if none is present.

In order circumvent this issue, following workaround has been implemented:
1) create an option "enforce-no-adf" in the file avision.conf
2) patch the code in avision.c to make use of this option, if the conditions that lead to the unsuccessful ADF search (namely detection of NO ADF but reporting of SOME ADF type) is given.

> Per default the new option is inactive by comment; activate at your own risk!
> patches have been marked with tags <2013-09-15_PNu>, please remove them if accepted.

An upstream report was added to
<https://alioth.debian.org/tracker/index.php?func=detail&aid=314108&group_id=30186&atid=410366>

OBS-URL: https://build.opensuse.org/request/show/199164
OBS-URL: https://build.opensuse.org/package/show/graphics/sane-backends?expand=0&rev=70
2013-09-16 00:30:49 +00:00

49 lines
1.4 KiB
Diff

--- backend/avision.c.orig 2012-07-01 04:00:44.000000000 +0200
+++ backend/avision.c 2013-09-15 13:24:31.150933718 +0200
@@ -1273,6 +1273,12 @@
static SANE_Bool force_a4 = SANE_FALSE;
static SANE_Bool force_a3 = SANE_FALSE;
+/* <2013-09-15_PNu>
+ * HP Scanjet 8200 w/o ADF fails during the ADF reset loop in get_accessories_info()
+ * Brute force option enforce-no-adf
+ */
+static SANE_Bool enforce_no_adf = SANE_FALSE;
+
/* hardware resolutions to interpolate from */
static const int hw_res_list_c5[] =
{
@@ -3208,6 +3214,17 @@
dev->inquiry_adf |= result [0];
+ /* <2013-09-15_PNu>
+ * HP Scanjet 8200 w/o ADF fails during the following ADF reset loop
+ */
+ if (enforce_no_adf) {
+ if (result[0] == 0) {
+ result[2] = 0; /* to prevent fail of following loop */
+ DBG (3, "get_accessories_info: no adf enforced!\n");
+ }
+ }
+ /* </2013-09-15_PNu> */
+
if (dev->hw->feature_type2 & AV_ADF_FLIPPING_DUPLEX)
{
if (result[0] == 1)
@@ -7637,6 +7654,14 @@
linenumber);
static_calib_list [2] = SANE_TRUE;
}
+ else if (strcmp (word, "enforce-no-adf") == 0) {
+ /* <2013-09-15_PNu>
+ * Brute force option enforce-no-adf
+ */
+ DBG (3, "sane_reload_devices: config file line %d: enforce-no-adf\n",
+ linenumber);
+ enforce_no_adf = SANE_TRUE;
+ }
else
DBG (1, "sane_reload_devices: config file line %d: options unknown!\n",
linenumber);