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");
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);
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;
}