diff options
| author | Jörg Frings-Fürst <debian@jff.email> | 2023-02-16 10:20:08 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff.email> | 2023-02-16 10:20:08 +0100 | 
| commit | 778ebf8ee9cb22ea5727844333bcd5a6ee6bc0de (patch) | |
| tree | a754e785b286ed82b45fe4e50b980714ad80e0a7 /backend/fujitsu.c | |
| parent | 7d8aac1f3634dc58785bec7acf097dd6bac8c394 (diff) | |
| parent | 32cb765f681299af226ca0520993cbe47ba5ecd0 (diff) | |
Merge branch 'release/debian/1.2.1-1'debian/1.2.1-1
Diffstat (limited to 'backend/fujitsu.c')
| -rw-r--r-- | backend/fujitsu.c | 56 | 
1 files changed, 37 insertions, 19 deletions
| diff --git a/backend/fujitsu.c b/backend/fujitsu.c index d17e015..52d0988 100644 --- a/backend/fujitsu.c +++ b/backend/fujitsu.c @@ -6,7 +6,7 @@     Copyright (C) 2000 Randolph Bentson     Copyright (C) 2001 Frederik Ramm     Copyright (C) 2001-2004 Oliver Schirrmeister -   Copyright (C) 2003-2021 m. allan noah +   Copyright (C) 2003-2022 m. allan noah     JPEG output and low memory usage support funded by:       Archivista GmbH, www.archivista.ch @@ -15,7 +15,7 @@     Automatic length detection support funded by:       Martin G. Miller, mgmiller at optonline.net     Software image enhancement routines and recent scanner support funded by: -     Fujitsu Computer Products of America, Inc. www.fcpa.com +     PFU America, Inc., fujitsuscanners.com     -------------------------------------------------------------------------- @@ -611,6 +611,11 @@           - fix JPEG duplex memory corruption           - change window_gamma init (fixes bright/contrast for iX1500)           - only call send_lut after set_window (remove late_lut) +      v138 2022-06-01, MAN +         - minor updates to company name (FCPA -> PFU) +      v139 2022-11-15, MAN +         - move updated window_gamma logic to set_window +         - use internal gamma table if possible (fixes #618)     SANE FLOW DIAGRAM @@ -660,7 +665,7 @@  #include "fujitsu.h"  #define DEBUG 1 -#define BUILD 137 +#define BUILD 139  /* values for SANE_DEBUG_FUJITSU env var:   - errors           5 @@ -764,7 +769,7 @@ static struct fujitsu *fujitsu_devList = NULL;  SANE_Status  sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)  { -  authorize = authorize;        /* get rid of compiler warning */ +  (void) authorize;             /* get rid of compiler warning */    DBG_INIT ();    DBG (10, "sane_init: start\n"); @@ -819,7 +824,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)    int num_devices=0;    int i=0; -  local_only = local_only;        /* get rid of compiler warning */ +  (void) local_only;            /* get rid of compiler warning */    DBG (10, "sane_get_devices: start\n"); @@ -2107,12 +2112,6 @@ init_model (struct fujitsu *s)    s->ppl_mod_by_mode[MODE_GRAYSCALE] = 1;    s->ppl_mod_by_mode[MODE_COLOR] = 1; -  /* we prefer to use the downloaded (LUT) gamma table (0x80) if possible. -   * but if scanner has only built-in gamma tables, we use the first one (0) */ -  if (s->num_download_gamma){ -    s->window_gamma = 0x80; -  } -    /* endorser type tells string length (among other things) */    if(s->has_endorser_b){      /*old-style is 40 bytes*/ @@ -2206,7 +2205,10 @@ init_model (struct fujitsu *s)      s->color_interlace = COLOR_INTERLACE_3091;      s->duplex_interlace = DUPLEX_INTERLACE_3091;      s->ghs_in_rs = 1; -    s->window_gamma = 0; + +    /* might be inaccurate */ +    s->num_internal_gamma = 1; +    s->num_download_gamma = 0;      s->reverse_by_mode[MODE_LINEART] = 1;      s->reverse_by_mode[MODE_HALFTONE] = 1; @@ -7055,12 +7057,11 @@ sane_start (SANE_Handle handle)          goto errors;        } -      /* send lut if scanner has no hardware brightness/contrast, -       * or we are going to ask it to use a downloaded gamma table */ -      if (!s->brightness_steps || !s->contrast_steps || s->window_gamma & 0x80){ +      /* send lut if set_window said we would */ +      if ( s->window_gamma ){          ret = send_lut(s);          if (ret != SANE_STATUS_GOOD) -          DBG (5, "sane_start: WARNING: cannot late send_lut %d\n", ret); +          DBG (5, "sane_start: WARNING: cannot send_lut %d\n", ret);        }        /* some scanners need the q table sent, even when not scanning jpeg */ @@ -7614,6 +7615,23 @@ set_window (struct fujitsu *s)    /* the remainder of the block varies based on model and mode,     * except for gamma and paper size, those are in the same place */ +  /* determine if we need to send gamma LUT. +   * send lut if scanner supports it and any of: +   * has no hardware brightness but user changed it +   * has no hardware contrast but user changed it +   * has no internal gamma table */ +  if ( s->num_download_gamma && ( +       (!s->brightness_steps && s->brightness != 0) +    || (!s->contrast_steps && s->contrast != 0 ) +    || !s->num_internal_gamma +  ) ){ +    s->window_gamma = 0x80; +  } +  /* otherwise, use the internal table */ +  else{ +    s->window_gamma = 0; +  } +    /*vuid c0*/    if(s->has_vuid_3091){      set_WD_vendor_id_code (desc1, WD_VUID_3091); @@ -9270,7 +9288,7 @@ sense_handler (int fd, unsigned char * sensed_data, void *arg)    DBG (5, "sense_handler: start\n");    /* kill compiler warning */ -  fd = fd; +  (void) fd;    /* copy the rs return data into the scanner struct       so that the caller can use it if he wants */ @@ -9605,8 +9623,8 @@ do_scsi_cmd(struct fujitsu *s, int runRS, int shortTime,    int ret;    /*shut up compiler*/ -  runRS=runRS; -  shortTime=shortTime; +  (void) runRS; +  (void) shortTime;    DBG(10, "do_scsi_cmd: start\n"); | 
