From bd88044207ca013b8ee9ae7ce985da0953418253 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 10 Mar 2024 15:19:22 +0100 Subject: [PATCH] change read from image on handler --- src/kds_s2000w_handler.c | 16 ++++++++-------- src/kds_s2000w_net.c | 12 ++++++------ tests/kds_s2000w_net_read_tests.c | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 04be831..e06bd86 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -12,7 +12,6 @@ json_object* resp_config = NULL; json_object* config = NULL; blobdata image; -blobdata pnm_image; void _get_current_metadata(handler* h) { @@ -20,6 +19,7 @@ void _get_current_metadata(handler* h) json_object* metadataResp = NULL; json_object* metadata = NULL; json_object* mdata_value = NULL; + blobdata* pnm_image = NULL; response* resp = NULL; resp = kds_s2000w_client_response_init(); @@ -73,14 +73,14 @@ void _get_current_metadata(handler* h) if (h->current_metadata->depth > 8) { h->current_metadata->depth = 8; - kds_s2000w_convert_jpg_to_pnm_with_depth(&image, &pnm_image, h->current_metadata->depth); + pnm_image = (blobdata*) h->image; + kds_s2000w_convert_jpg_to_pnm_with_depth(&image, pnm_image, h->current_metadata->depth); } else { - kds_s2000w_convert_jpg_to_pnm(&image, &pnm_image); + pnm_image = (blobdata*) h->image; + kds_s2000w_convert_jpg_to_pnm(&image, pnm_image); } - h->current_metadata->size = pnm_image.size; - h->current_metadata->image = pnm_image.data; - debug_printf_int(DEBUG, "size of pnm image", pnm_image.size); + debug_printf_int(DEBUG, "size of pnm image", h->image->size); if (h->current_metadata->depth == 1) h->current_metadata->bytes_per_line = h->current_metadata->channels * floor((h->current_metadata->pixels_per_line + 7) / 8); @@ -301,8 +301,8 @@ void kds_s2000w_handler_open(const char* devicename, void** handle) image.size = 0; image.data = NULL; - pnm_image.size = 0; - pnm_image.data = NULL; + h->image->size = 0; + h->image->data = NULL; resp = kds_s2000w_client_response_init(); int result = kds_s2000w_client_open_session(resp); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index f85f302..dff77be 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -213,7 +213,7 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, } // last frame - if (h->read_info->read_size >= h->current_metadata->size) { + if (h->read_info->read_size >= h->image->size) { *length = 0; h->current_metadata->is_last = 1; @@ -222,18 +222,18 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, // calc max length int maxlen = max_length; - if (h->current_metadata->size - h->read_info->read_size < max_length) - maxlen = h->current_metadata->size - h->read_info->read_size; + if (h->image->size - h->read_info->read_size < max_length) + maxlen = h->image->size - h->read_info->read_size; // read image - if (h->current_metadata->image != NULL) { - int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(h->current_metadata->image); + if (h->image->data != NULL) { + int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(h->image->data); if (h->read_info->read_size <= 0) h->read_info->read_size += skip_header_bytes; } *length = maxlen; - memcpy(data, h->current_metadata->image + h->read_info->read_size, *length); + memcpy(data, h->image->data + h->read_info->read_size, *length); h->read_info->read_size += *length; return SANE_STATUS_GOOD; diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index a326af0..e110c43 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -61,8 +61,8 @@ START_TEST(sane_kds_s2000w_net_read_empty_image) h->current_metadata->size = 1; char* image = malloc(sizeof(char)); image[0] = 0; - h->current_metadata->image = image; - h->current_metadata->size = 0; + h->image->data = image; + h->image->size = 0; char* dataptr = malloc(sizeof(char)); SANE_Status status = _sane_kds_s2000w_net_read(h, dataptr, 65536, &length); @@ -83,13 +83,13 @@ START_TEST(sane_kds_s2000w_net_read_test) h->read_info->cancel = 0; h->read_info->read_size = 0; h->current_metadata->format = 0; - h->current_metadata->size = 65539; + h->image->size = 65539; char* image = malloc(sizeof(char) * 65539); for (int i = 0; i < 3; i++) { image[i] = 0x0a; } image[3] = 0xff; - h->current_metadata->image = image; + h->image->data = image; SANE_Int maxlen = 65536; char* dataptr = malloc(sizeof(char) * maxlen); @@ -118,13 +118,13 @@ START_TEST(sane_kds_s2000w_net_read_bytes_per_line_bigger_test) h->read_info->cancel = 0; h->read_info->read_size = 0; h->current_metadata->format = 0; - h->current_metadata->size = 95003; + h->image->size = 95003; char* image = malloc(sizeof(char) * 95003); for (int i = 0; i < 3; i++) { image[i] = 0x0a; } image[3] = 0xff; - h->current_metadata->image = image; + h->image->data = image; SANE_Int maxlen = 65536; char* dataptr = malloc(sizeof(char) * maxlen); -- 2.39.5