]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add verify metadata run two times
authorBastian Dehn <hhaalo@arcor.de>
Sun, 18 Feb 2024 20:47:56 +0000 (21:47 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 18 Feb 2024 20:47:56 +0000 (21:47 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index 39f35a108c1b659d2d5d4e741c71fcea7a708eae..b4f0ca70a54ac176783ac462e752189b7b76f999 100644 (file)
@@ -181,6 +181,7 @@ void kds_s2000w_handler_open(const char* devicename, void** handle)
        h->current_metadata->depth = 0;
        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 = malloc(sizeof(readinfo));
        h->read_info->scan_started = 0;
index 6f1798f70917d090036a68adda1bef4adf94c8b9..e7db712532d453ddc6b0db9aec5c1a02a87210fb 100644 (file)
@@ -21,6 +21,7 @@ typedef struct {
        int depth;
        int valid;
        int scanned_all_complete;
+       int verify;
        void* image;
 } metadata;
 
index 6b52d94504eac005d323fce4103932cc0d59ec30..f49f52262a69e9f4a5962a05ef87f1dd0fe718dd 100644 (file)
@@ -122,11 +122,17 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        if (!h->read_info->scan_started)
                return SANE_STATUS_INVAL;
 
-       for (int i = 0; i < 10; i++) {
-               sleep(1);
-               kds_s2000w_handler_get_parameters(handle);
-               if (h->current_metadata->valid)
-                       break;
+       if (h->current_metadata->verify)
+               h->current_metadata->verify++;
+
+       if (!h->current_metadata->verify) {
+               for (int i = 0; i < 10; i++) {
+                       sleep(1);
+                       kds_s2000w_handler_get_parameters(handle);
+                       h->current_metadata->verify = 1;
+                       if (h->current_metadata->valid)
+                               break;
+               }
        }
 
        if (!h->current_metadata->valid)
@@ -145,6 +151,9 @@ 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;
 
+       if (h->current_metadata->verify >= 2)
+               h->current_metadata->verify = 0;
+
        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);