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> 2007-01-20 Alessandro Zummo <a.zummo@towertech.it>
* sanei/sanei_tcp.c: added a missing include * 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; *(SANE_Word *) val = s->val[option].w;
DBG (21, "value for option %s: %d\n", option_name[option], DBG (21, "value for option %s: %d\n", option_name[option],
s->val[option].w); s->val[option].w);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
return (SANE_STATUS_GOOD); return (SANE_STATUS_GOOD);
case OPT_GAMMA_VECTOR: case OPT_GAMMA_VECTOR:
@ -435,33 +433,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_TPU_DCM: case OPT_TPU_DCM:
case OPT_TPU_FILMTYPE: case OPT_TPU_FILMTYPE:
case OPT_MODE: 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: 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: 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: case OPT_SCANNING_SPEED:
strcpy (val, s->val[option].s); 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], DBG (21, "value for option %s: %s\n", option_name[option],
s->val[option].s); s->val[option].s);
return (SANE_STATUS_GOOD); return (SANE_STATUS_GOOD);
@ -658,21 +633,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_FLATBED_ONLY: case OPT_FLATBED_ONLY:
s->val[option].w = *(SANE_Word *) val; 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 */ { /* switch on */
s->hw->adf.Priority |= 0x03; /* flatbed mode */ s->hw->adf.Priority |= 0x03; /* flatbed mode */
s->hw->adf.Feeder &= 0x00; /* autofeed off (default) */ s->hw->adf.Feeder &= 0x00; /* autofeed off (default) */
s->hw->adf.Status = ADF_STAT_DISABLED; s->hw->adf.Status = ADF_STAT_DISABLED;
s->val[option].w = SANE_TRUE;
} /* if it isn't connected, don't bother fixing */ } /* if it isn't connected, don't bother fixing */
return SANE_STATUS_GOOD; return SANE_STATUS_GOOD;
case OPT_TPU_ON: 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->hw->tpu.Status = TPU_STAT_ACTIVE;
s->opt[OPT_TPU_ON].title = SANE_I18N("Turn off the transparency "
"unit");
s->opt[OPT_TPU_TRANSPARENCY].cap &= s->opt[OPT_TPU_TRANSPARENCY].cap &=
(s->hw->tpu.ControlMode == 3) ? ~SANE_CAP_INACTIVE : ~0; (s->hw->tpu.ControlMode == 3) ? ~SANE_CAP_INACTIVE : ~0;
s->opt[OPT_TPU_FILMTYPE].cap &= s->opt[OPT_TPU_FILMTYPE].cap &=
@ -680,9 +653,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
} }
else /* switch off */ else /* switch off */
{ {
s->val[OPT_TPU_ON].w = TPU_STAT_INACTIVE; s->hw->tpu.Status = TPU_STAT_INACTIVE;
s->opt[OPT_TPU_ON].title = SANE_I18N("Turn on the transparency "
"unit");
s->opt[OPT_TPU_TRANSPARENCY].cap |= SANE_CAP_INACTIVE; s->opt[OPT_TPU_TRANSPARENCY].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_TPU_FILMTYPE].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; 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->val[OPT_FLATBED_ONLY].w != SANE_TRUE)
&& (s->hw->adf.Problem != 0)) && (s->hw->adf.Problem != 0))
{ {
@ -1208,7 +1179,7 @@ sane_start (SANE_Handle handle)
} }
return status; 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)) && (s->val[OPT_FLATBED_ONLY].w == SANE_TRUE))
{ {
set_adf_mode (s->fd, s->hw->adf.Priority); 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]); DBG (3, "scan mode control byte[%d] = %d\n", (int) i, tbuf[i]);
dev->tpu.Status = (tbuf[2 + 4 + 5] >> 7) ? dev->tpu.Status = (tbuf[2 + 4 + 5] >> 7) ?
TPU_STAT_INACTIVE : TPU_STAT_NONE; 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) ? dev->tpu.Status = (tbuf[2 + 4 + 5] && 0x04) ?
TPU_STAT_INACTIVE : TPU_STAT_ACTIVE; 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) ? dev->adf.Status = (abuf[ADF_Status] & ADF_NOT_PRESENT) ?
ADF_STAT_NONE : ADF_STAT_INACTIVE; 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) ? dev->adf.Status = (abuf[ADF_Status] & ADF_PROBLEM) ?
ADF_STAT_INACTIVE : ADF_STAT_ACTIVE; ADF_STAT_INACTIVE : ADF_STAT_ACTIVE;
@ -1706,14 +1706,13 @@ init_options (CANON_Scanner * s)
/* Transparency Unit (FAU, Film Adapter Unit) */ /* Transparency Unit (FAU, Film Adapter Unit) */
s->opt[OPT_TPU_ON].name = "transparency-unit-on-off"; s->opt[OPT_TPU_ON].name = "transparency-unit-on-off";
s->opt[OPT_TPU_ON].title = (s->hw->tpu.Status == TPU_STAT_ACTIVE) s->opt[OPT_TPU_ON].title = SANE_I18N("Transparency unit");
? SANE_I18N("Turn off the transparency unit")
: SANE_I18N("Turn on the transparency unit");
s->opt[OPT_TPU_ON].desc = SANE_I18N("Switch on/off the transparency unit " s->opt[OPT_TPU_ON].desc = SANE_I18N("Switch on/off the transparency unit "
"(FAU, film adapter unit)"); "(FAU, film adapter unit)");
s->opt[OPT_TPU_ON].type = SANE_TYPE_BOOL; s->opt[OPT_TPU_ON].type = SANE_TYPE_BOOL;
s->opt[OPT_TPU_ON].unit = SANE_UNIT_NONE; 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->opt[OPT_TPU_ON].cap |=
(s->hw->tpu.Status != TPU_STAT_NONE) ? 0 : SANE_CAP_INACTIVE; (s->hw->tpu.Status != TPU_STAT_NONE) ? 0 : SANE_CAP_INACTIVE;