sane-project-website/old-archive/1997-11/0010.html

237 wiersze
11 KiB
HTML

<!-- received="Sun Nov 2 01:41:16 1997 PST" -->
<!-- sent="Sun, 2 Nov 1997 10:31:25 +0100 (MET)" -->
<!-- name="Oliver.Rauch@Wolfsburg.DE" -->
<!-- email="Oliver.Rauch@Wolfsburg.DE" -->
<!-- subject="Re: v0.67, finally!" -->
<!-- id="199711020931.KAA19521@Babylon5.wolfsburg.de" -->
<!-- inreplyto="199711020742.XAA14032@panda.mostang.com" -->
<title>sane-devel: Re: v0.67, finally!</title>
<h1>Re: v0.67, finally!</h1>
<a href="mailto:Oliver.Rauch@Wolfsburg.DE"><i>Oliver.Rauch@Wolfsburg.DE</i></a><br>
<i>Sun, 2 Nov 1997 10:31:25 +0100 (MET)</i>
<p>
<ul>
<li> <b>Messages sorted by:</b> <a href="date.html#10">[ date ]</a><a href="index.html#10">[ thread ]</a><a href="subject.html#10">[ subject ]</a><a href="author.html#10">[ author ]</a>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Previous message:</b> <a href="0009.html">Oliver.Rauch@Wolfsburg.DE: "Re: gtk-951025 patches"</a>
<li> <b>In reply to:</b> <a href="0008.html">David Mosberger-Tang: "v0.67, finally!"</a>
<!-- nextthread="start" -->
<li> <b>Next in thread:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0013.html">Pedro Guimaraes: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0047.html">Tom Lee: "Tangential question about stuck SCSI scanner"</a>
<!-- reply="end" -->
</ul>
<!-- body="start" -->
Hello David, hello UMAX-owners,<br>
<p>
the umax-backend hangs in sane-0.67, but here is a patch<br>
that corrects it!<br>
<p>
There has changed something in the way the options between<br>
xscanimage (and may be scanimage too) and the umax-backend<br>
were handled and so we got into an endless loop.<br>
At the end of the mail there is a fix for it!<br>
<p>
just kill everything until ------------------, save the file<br>
as umax-patch, move it to sane-0.67/backend and then do<br>
cd sane-0.67/backend<br>
patch umax.c &lt;umax-patch<br>
<p>
I also had problems to compile the umax-backend because<br>
usleep and strdup were not found any more.<br>
Simple trick at first: use old sane-0.66/backend/Makefile<br>
if you have it!<br>
<p>
Bye<br>
Oliver<br>
--------------------------<br>
<p>
--- umax.c Sat Oct 25 04:44:47 1997<br>
+++ /home/oli/scanner/sane-0.67/backend/umax.c Sun Nov 2 10:02:15 1997<br>
@@ -1357,88 +1357,100 @@<br>
scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
if (scanner-&gt;val[option].w == SANE_FALSE) /* 8 bit mode */<br>
- {<br>
+ {<br>
scanner-&gt;opt[OPT_GAMMA_VECTOR].constraint.range = &amp;u8_range;<br>
scanner-&gt;output_bytes = 1; /* 8 bits output */<br>
- }<br>
+ }<br>
else /* 10 bit mode */<br>
- {<br>
+ {<br>
scanner-&gt;opt[OPT_GAMMA_VECTOR].constraint.range = &amp;u10_range;<br>
scanner-&gt;output_bytes = 2; /* 10 bits output */<br>
- }<br>
+ }<br>
return SANE_STATUS_GOOD;<br>
<br>
case OPT_ANALOG_GAMMA_BIND:<br>
- scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
- if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
- if (scanner-&gt;val[option].w == SANE_FALSE)<br>
- {<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- }<br>
- else<br>
- {<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_R].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_G].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_ANALOG_GAMMA_B].cap |= SANE_CAP_INACTIVE;<br>
- }<br>
+ if (scanner-&gt;val[option].w != *(SANE_Word *) val)<br>
+ {<br>
+ scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
+ if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
+ if (scanner-&gt;val[option].w == SANE_FALSE)<br>
+ {<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ }<br>
+ else<br>
+ {<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_R].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_G].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_ANALOG_GAMMA_B].cap |= SANE_CAP_INACTIVE;<br>
+ }<br>
+ }<br>
return SANE_STATUS_GOOD;<br>
<br>
case OPT_HIGHLIGHT_BIND:<br>
- scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
- if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
- if (scanner-&gt;val[option].w == SANE_FALSE)<br>
- {<br>
- scanner-&gt;opt[OPT_HIGHLIGHT].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- }<br>
- else<br>
- {<br>
- scanner-&gt;opt[OPT_HIGHLIGHT].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_R].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_G].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_HIGHLIGHT_B].cap |= SANE_CAP_INACTIVE;<br>
- }<br>
+ if (scanner-&gt;val[option].w != *(SANE_Word *) val)<br>
+ {<br>
+ scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
+ if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
+ if (scanner-&gt;val[option].w == SANE_FALSE)<br>
+ {<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ }<br>
+ else<br>
+ {<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_R].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_G].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_HIGHLIGHT_B].cap |= SANE_CAP_INACTIVE;<br>
+ }<br>
+ }<br>
return SANE_STATUS_GOOD;<br>
<br>
case OPT_SHADOW_BIND:<br>
- scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
- if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
- if (scanner-&gt;val[option].w == SANE_FALSE)<br>
- {<br>
- scanner-&gt;opt[OPT_SHADOW].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- }<br>
- else<br>
+ if (scanner-&gt;val[option].w != *(SANE_Word *) val)<br>
{<br>
- scanner-&gt;opt[OPT_SHADOW].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_R].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_G].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_SHADOW_B].cap |= SANE_CAP_INACTIVE;<br>
- }<br>
+ scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
+ if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
+ if (scanner-&gt;val[option].w == SANE_FALSE)<br>
+ {<br>
+ scanner-&gt;opt[OPT_SHADOW].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_R].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_G].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_B].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ }<br>
+ else<br>
+ {<br>
+ scanner-&gt;opt[OPT_SHADOW].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_R].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_G].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_SHADOW_B].cap |= SANE_CAP_INACTIVE;<br>
+ }<br>
+ }<br>
return SANE_STATUS_GOOD;<br>
<br>
case OPT_RESOLUTION_BIND:<br>
- scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
+ if (scanner-&gt;val[option].w != *(SANE_Word *) val)<br>
+ {<br>
+ scanner-&gt;val[option].w = *(SANE_Word *) val;<br>
<br>
- if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
- if (scanner-&gt;val[option].w == SANE_FALSE)<br>
- { /* don't bind */<br>
- scanner-&gt;opt[OPT_Y_RESOLUTION].cap &amp;= ~SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_X_RESOLUTION].title = "X-Resolution";<br>
- }<br>
- else<br>
- { /* bind */<br>
- scanner-&gt;opt[OPT_Y_RESOLUTION].cap |= SANE_CAP_INACTIVE;<br>
- scanner-&gt;opt[OPT_X_RESOLUTION].title = SANE_TITLE_SCAN_RESOLUTION;<br>
- }<br>
+ if (info) { *info |= SANE_INFO_RELOAD_OPTIONS; }<br>
+ if (scanner-&gt;val[option].w == SANE_FALSE)<br>
+ { /* don't bind */<br>
+ scanner-&gt;opt[OPT_Y_RESOLUTION].cap &amp;= ~SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_X_RESOLUTION].title = "X-Resolution";<br>
+ }<br>
+ else<br>
+ { /* bind */<br>
+ scanner-&gt;opt[OPT_Y_RESOLUTION].cap |= SANE_CAP_INACTIVE;<br>
+ scanner-&gt;opt[OPT_X_RESOLUTION].title = SANE_TITLE_SCAN_RESOLUTION;<br>
+ }<br>
+ }<br>
return SANE_STATUS_GOOD;<br>
<br>
/* side-effect-free word-array options: */<br>
<p>
<pre>
--
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
</pre>
<!-- body="end" -->
<p>
<ul>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Previous message:</b> <a href="0009.html">Oliver.Rauch@Wolfsburg.DE: "Re: gtk-951025 patches"</a>
<li> <b>In reply to:</b> <a href="0008.html">David Mosberger-Tang: "v0.67, finally!"</a>
<!-- nextthread="start" -->
<li> <b>Next in thread:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0011.html">Ignacio Garcia: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0013.html">Pedro Guimaraes: "Re: v0.67, finally!"</a>
<li> <b>Reply:</b> <a href="0047.html">Tom Lee: "Tangential question about stuck SCSI scanner"</a>
<!-- reply="end" -->
</ul>