]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add reset handler
authorBastian Dehn <hhaalo@arcor.de>
Wed, 28 Feb 2024 20:56:53 +0000 (21:56 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Wed, 28 Feb 2024 20:56:53 +0000 (21:56 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index 8b53e2795b8f4170ac97f9d291dacd8764a11551..003a0ec032c596318fb20514629da3b143a7a24e 100644 (file)
@@ -209,6 +209,35 @@ void free_handler(handler* h)
        h = NULL;
 }
 
+void reset_handler(handler* h)
+{
+       free(h->current_metadata->image);
+       h->current_metadata->image = NULL;
+
+       h->sessionid = 0;
+       h->state = NOTCONNECTED;
+       h->current_scan_status->current_image_number = 1;
+       h->current_scan_status->available_images = 0;
+       h->current_scan_status->downloaded_images = 0;
+       h->current_scan_status->complete_scanned = 0;
+       h->current_metadata->format = 1;
+       h->current_metadata->channels = 3;
+       h->current_metadata->is_last = 1;
+       h->current_metadata->size = 0;
+       h->current_metadata->bytes_per_line = 0;
+       h->current_metadata->pixels_per_line = 0;
+       h->current_metadata->lines = 0;
+       h->current_metadata->depth = 8;
+       h->current_metadata->valid = 0;
+       h->current_metadata->scanned_all_complete = 0;
+       h->current_metadata->image = NULL;
+       h->read_info->scan_started = 0;
+       h->read_info->cancel = 0;
+       h->read_info->read_size = 0;
+       h->read_info->readed_bytes_per_line = 0;
+       h->read_info->readed_lines = 0;
+}
+
 void kds_s2000w_handler_open(const char* devicename, void** handle)
 {
        debug_printf(ALL, "kds_s2000w_handler_open");
index ea01fe81a1a41e0586e29704b468399eea3baa2c..67de78c5efc28ec489bc27fa65b9b0668ed7cc1b 100644 (file)
@@ -50,6 +50,7 @@ typedef struct {
 
 handler* init_handler();
 void free_handler(handler* h);
+void reset_handler(handler* h);
 void kds_s2000w_handler_open(const char* devicename, void** handle);
 void kds_s2000w_handler_close(handler* h);
 void kds_s2000w_handler_get_option(handler* handle, int option, void* value, int* info);
index 40a7097ab56a0b9488e77115cede92574b1de5e9..5ae74ec8732988c4111bba4902e667b6232ce121 100644 (file)
@@ -184,10 +184,9 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
        handler* h = (handler*) handle;
        // cancel
        if (h->read_info->cancel) {
-               h->read_info->cancel = 0;
-               h->read_info->scan_started = 0;
-               *length = 0;
+               reset_handler(h);
                kds_s2000w_handler_stop_scan(h);
+               *length = 0;
                return SANE_STATUS_CANCELLED;
        }