]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add verfy
authorBastian Dehn <hhaalo@arcor.de>
Sun, 25 Feb 2024 14:25:15 +0000 (15:25 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 25 Feb 2024 14:25:15 +0000 (15:25 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index 98110a33c558252982d4a96d39deae627ee7a288..abb5b3e8547f5b058909d9786df364e6bf183ba2 100644 (file)
@@ -188,6 +188,7 @@ handler* init_handler()
        h->current_metadata->depth = 8;
        h->current_metadata->valid = 0;
        h->current_metadata->scanned_all_complete = 0;
+       h->current_metadata->verify = 0;
        h->current_metadata->image = NULL;
        h->read_info->scan_started = 0;
        h->read_info->cancel = 0;
index ea01fe81a1a41e0586e29704b468399eea3baa2c..3aa54c8a356f521501b5f577d5e7535b21a8d08e 100644 (file)
@@ -22,6 +22,7 @@ typedef struct {
        int depth;
        int valid;
        int scanned_all_complete;
+       int verify;
        void* image;
 } metadata;
 
index 19daccef5861eeb44d2757cab128fad679e5fe15..5e1cd7131d33f8fcf64abae8ef1fa56436c3cc9c 100644 (file)
@@ -124,9 +124,14 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
 {
        debug_printf(ALL, "sane_kds_s2000w_net_get_parameters");
        handler* h = (handler*) handle;
-       metadata mdata;
+
        if (!h->read_info->scan_started)
+               return SANE_STATUS_INVAL;
+
+       if (h->current_metadata->verify > 0) {
+               h->current_metadata->verify--;
                return SANE_STATUS_GOOD;
+       }
 
        for (int i = 0; i < 10; i++) {
                sleep(1);
@@ -138,6 +143,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        if (!h->current_metadata->valid)
                return SANE_STATUS_UNSUPPORTED;
 
+       metadata mdata;
        memcpy(&mdata, h->current_metadata, sizeof(metadata));
 
        params->format = mdata.format;
@@ -151,6 +157,8 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        h->read_info->readed_bytes_per_line = 0;
        h->read_info->readed_lines = 0;
 
+       h->current_metadata->verify = 1;
+
        debug_printf_int(DEBUG, "format", params->format);
        debug_printf_int(DEBUG, "last frame", params->last_frame);
        debug_printf_int(DEBUG, "bytes per line", params->bytes_per_line);