[sane-devel] MX375 no recovery from ADF empty when scan started

Rolf Bensch rolf at bensch-online.de
Wed May 21 15:27:39 UTC 2014


Hi Matthias,

I created a new patch1. This should fix both issues. I also added a new
debug output to check paper empty code.

Cheers,
Rolf


Am 21.05.2014 09:51, schrieb Matthias Peter Walther:
> Hallo Rolf,
> 
> I can't notice any change of behavior here. To make sure, that I use the
> patched version, I manually deleted all libsane*.
> 
> See log attached.
> 
> And the scan does not start, if I insert paper during the timeout
> countdown. The scanner beeps, so the firmware detects the inserted
> paper. But the scan does not start.
> 
> Grüße
> Matthias
> 
> On 20.05.2014 22:44, Rolf Bensch wrote:
>> Hi Matthias,
>>
>> Am 20.05.2014 17:49, schrieb Matthias Peter Walther:
>>> Hallo Rolf,
>>>
>>> sorry to bother you again. But here is another bug with my MX375.
>> No problem.
>>
>>> If I start an ADF-scan while the ADF is empty, the scanner does not
>>> recover and needs to be restarted by hand.
>> Attached patch should fix this. The patch is based on recent git code.
>>
>>> [...]
>>>
>>> I mean scanning ADF without paper in it is stupid, but it should not
>>> crash the device :)
>> It's not stupid. Maybe you started the job and forgot to put the paper
>> into the ADF. Then the job should start scanning if you put the paper
>> into the ADF *before* timeout counted down to 0 and aborts the job.
>>
>> Please test, if scanning starts if you put paper into the ADF during
>> timeout counts down.
>>
>> Cheers,
>> Rolf
> 
-------------- next part --------------
--- ./pixma_mp150.c	2014-05-20 22:11:27.000000000 +0200
+++ ../sane-backends/backend/pixma_mp150.c	2014-05-21 17:21:18.000000000 +0200
@@ -1352,12 +1352,22 @@
       tmo = 10;
       while (!has_paper (s) && --tmo >= 0)
         {
+          if ((error = query_status (s)) < 0)
+            return error;
           WAIT_INTERRUPT (1000);
           PDBG (pixma_dbg
             (2, "No paper in ADF. Timed out in %d sec.\n", tmo));
         }
       if (!has_paper (s))
+      {
+        PDBG (pixma_dbg (4, "*mp150_scan***** no paper in ADF *****\n"));
+        if (mp->generation == 4 && mp->adf_state == state_idle)
+          {
+            if (!send_xml_dialog (s, XML_END))
+              return PIXMA_EPROTO;
+          }
         return PIXMA_ENO_PAPER;
+      }
     }
 
   if (has_ccd_sensor (s) && (mp->generation <= 2))


More information about the sane-devel mailing list