Fixed the "three-valued boolean" bug

merge-requests/1/head
Mattias Ellert 2007-01-21 13:29:21 +00:00
rodzic 448ba7e84d
commit 17e9115fdd
3 zmienionych plików z 17 dodań i 42 usunięć

Wyświetl plik

@ -1,3 +1,8 @@
2007-01-20 Mattias Ellert <mattias.ellert@tsl.uu.se>
* backend/canon.c, backend/canon-sane.c:
Fixed the "three-valued boolean" bug
2007-01-20 Alessandro Zummo <a.zummo@towertech.it>
* sanei/sanei_tcp.c: added a missing include

Wyświetl plik

@ -371,8 +371,6 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*(SANE_Word *) val = s->val[option].w;
DBG (21, "value for option %s: %d\n", option_name[option],
s->val[option].w);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
return (SANE_STATUS_GOOD);
case OPT_GAMMA_VECTOR:
@ -435,33 +433,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_TPU_DCM:
case OPT_TPU_FILMTYPE:
case OPT_MODE:
strcpy (val, s->val[option].s);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
DBG (21, "value for option %s: %s\n", option_name[option],
s->val[option].s);
return (SANE_STATUS_GOOD);
case OPT_NEGATIVE:
strcpy (val, s->val[option].s);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
DBG (21, "value for option %s: %s\n", option_name[option],
s->val[option].s);
return (SANE_STATUS_GOOD);
case OPT_NEGATIVE_TYPE:
strcpy (val, s->val[option].s);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
DBG (21, "value for option %s: %s\n", option_name[option],
s->val[option].s);
return (SANE_STATUS_GOOD);
case OPT_SCANNING_SPEED:
strcpy (val, s->val[option].s);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
DBG (21, "value for option %s: %s\n", option_name[option],
s->val[option].s);
return (SANE_STATUS_GOOD);
@ -658,21 +633,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_FLATBED_ONLY:
s->val[option].w = *(SANE_Word *) val;
if (s->hw->adf.Status != ADF_STAT_NONE && s->val[option].w )
if (s->hw->adf.Status != ADF_STAT_NONE && s->val[option].w)
{ /* switch on */
s->hw->adf.Priority |= 0x03; /* flatbed mode */
s->hw->adf.Feeder &= 0x00; /* autofeed off (default) */
s->hw->adf.Status = ADF_STAT_DISABLED;
s->val[option].w = SANE_TRUE;
} /* if it isn't connected, don't bother fixing */
return SANE_STATUS_GOOD;
case OPT_TPU_ON:
if (s->val[OPT_TPU_ON].w == TPU_STAT_INACTIVE) /* switch on */
s->val[option].w = *(SANE_Word *) val;
if (s->val[option].w) /* switch on */
{
s->val[OPT_TPU_ON].w = TPU_STAT_ACTIVE;
s->opt[OPT_TPU_ON].title = SANE_I18N("Turn off the transparency "
"unit");
s->hw->tpu.Status = TPU_STAT_ACTIVE;
s->opt[OPT_TPU_TRANSPARENCY].cap &=
(s->hw->tpu.ControlMode == 3) ? ~SANE_CAP_INACTIVE : ~0;
s->opt[OPT_TPU_FILMTYPE].cap &=
@ -680,9 +653,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
}
else /* switch off */
{
s->val[OPT_TPU_ON].w = TPU_STAT_INACTIVE;
s->opt[OPT_TPU_ON].title = SANE_I18N("Turn on the transparency "
"unit");
s->hw->tpu.Status = TPU_STAT_INACTIVE;
s->opt[OPT_TPU_TRANSPARENCY].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_TPU_FILMTYPE].cap |= SANE_CAP_INACTIVE;
}
@ -1186,7 +1157,7 @@ sane_start (SANE_Handle handle)
s->scanning = SANE_FALSE;
if ((s->hw->adf.Status == SANE_TRUE)
if ((s->hw->adf.Status != ADF_STAT_NONE)
&& (s->val[OPT_FLATBED_ONLY].w != SANE_TRUE)
&& (s->hw->adf.Problem != 0))
{
@ -1208,7 +1179,7 @@ sane_start (SANE_Handle handle)
}
return status;
}
else if ((s->hw->adf.Status == SANE_TRUE)
else if ((s->hw->adf.Status != ADF_STAT_NONE)
&& (s->val[OPT_FLATBED_ONLY].w == SANE_TRUE))
{
set_adf_mode (s->fd, s->hw->adf.Priority);

Wyświetl plik

@ -244,7 +244,7 @@ get_tpu_stat (int fd, CANON_Device * dev)
DBG (3, "scan mode control byte[%d] = %d\n", (int) i, tbuf[i]);
dev->tpu.Status = (tbuf[2 + 4 + 5] >> 7) ?
TPU_STAT_INACTIVE : TPU_STAT_NONE;
if (dev->tpu.Status == SANE_TRUE) /* TPU available */
if (dev->tpu.Status != TPU_STAT_NONE) /* TPU available */
{
dev->tpu.Status = (tbuf[2 + 4 + 5] && 0x04) ?
TPU_STAT_INACTIVE : TPU_STAT_ACTIVE;
@ -291,7 +291,7 @@ get_adf_stat (int fd, CANON_Device * dev)
dev->adf.Status = (abuf[ADF_Status] & ADF_NOT_PRESENT) ?
ADF_STAT_NONE : ADF_STAT_INACTIVE;
if (dev->adf.Status == SANE_TRUE) /* ADF available / INACTIVE */
if (dev->adf.Status != ADF_STAT_NONE) /* ADF available / INACTIVE */
{
dev->adf.Status = (abuf[ADF_Status] & ADF_PROBLEM) ?
ADF_STAT_INACTIVE : ADF_STAT_ACTIVE;
@ -1706,14 +1706,13 @@ init_options (CANON_Scanner * s)
/* Transparency Unit (FAU, Film Adapter Unit) */
s->opt[OPT_TPU_ON].name = "transparency-unit-on-off";
s->opt[OPT_TPU_ON].title = (s->hw->tpu.Status == TPU_STAT_ACTIVE)
? SANE_I18N("Turn off the transparency unit")
: SANE_I18N("Turn on the transparency unit");
s->opt[OPT_TPU_ON].title = SANE_I18N("Transparency unit");
s->opt[OPT_TPU_ON].desc = SANE_I18N("Switch on/off the transparency unit "
"(FAU, film adapter unit)");
s->opt[OPT_TPU_ON].type = SANE_TYPE_BOOL;
s->opt[OPT_TPU_ON].unit = SANE_UNIT_NONE;
s->val[OPT_TPU_ON].w = s->hw->tpu.Status;
s->val[OPT_TPU_ON].w =
(s->hw->tpu.Status == TPU_STAT_ACTIVE) ? SANE_TRUE : SANE_FALSE;
s->opt[OPT_TPU_ON].cap |=
(s->hw->tpu.Status != TPU_STAT_NONE) ? 0 : SANE_CAP_INACTIVE;