From efe7ec138cf804b8d6b64eb6b42631e44d6c7334 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 18 Feb 2024 21:47:56 +0100 Subject: [PATCH] add verify metadata run two times --- src/kds_s2000w_handler.c | 1 + src/kds_s2000w_handler.h | 1 + src/kds_s2000w_net.c | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 39f35a1..b4f0ca7 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -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; diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index 6f1798f..e7db712 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -21,6 +21,7 @@ typedef struct { int depth; int valid; int scanned_all_complete; + int verify; void* image; } metadata; diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 6b52d94..f49f522 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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); -- 2.39.5