From: Bastian Dehn Date: Thu, 28 Nov 2024 16:06:06 +0000 (+0100) Subject: Revert "Merge branch 'feature/cancel' into develop" X-Git-Tag: v1.0.6^2~1 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=af06077d4323ac8e9a11dbe3c6ff9790f5f4a2f8;p=sane-kds-s2000w-net.git Revert "Merge branch 'feature/cancel' into develop" This reverts commit 5e40a9f5e4478beafab0ec6fde80f09c71045c3a, reversing changes made to 5f319a32306e81bfe6aa83ec18632570649098b5. --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index c0fcab7..ee3bc32 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -214,16 +214,6 @@ void free_handler(handler* h) h = NULL; } -void* cancel_reset_handler(void* h) -{ - handler* handle = (handler*) h; - sleep(2); - kds_s2000w_handler_recreate_session(handle); - reset_handler(handle); - - return NULL; -} - void reset_handler(handler* h) { #ifndef NODEBUG diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index 7433b9d..237cd3d 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -59,7 +59,6 @@ typedef struct { handler* init_handler(); void free_handler(handler* h); -void* cancel_reset_handler(void* h); void reset_handler(handler* h); void kds_s2000w_handler_recreate_session(handler* h); void kds_s2000w_handler_open(const char* devicename, void** handle); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 7363d27..2d3236e 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -3,7 +3,6 @@ #include #include #include -#include #include "config.h" #include "kds_s2000w_net.h" #include "kds_s2000w_option_descriptors.h" @@ -163,8 +162,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, handler* h = (handler*) handle; if (h->read_info->cancel) { - pthread_t reset_thread; - pthread_create(&reset_thread, NULL, cancel_reset_handler, handle); + reset_handler(h); return SANE_STATUS_CANCELLED; } @@ -200,8 +198,7 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) handler* h = (handler*) handle; if (h->read_info->cancel) { - pthread_t reset_thread; - pthread_create(&reset_thread, NULL, cancel_reset_handler, handle); + reset_handler(h); return SANE_STATUS_CANCELLED; } @@ -255,8 +252,7 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, // cancel if (h->read_info->cancel) { - pthread_t reset_thread; - pthread_create(&reset_thread, NULL, cancel_reset_handler, handle); + reset_handler(h); *length = 0; return SANE_STATUS_CANCELLED; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 67c7bb4..81fa72e 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -24,6 +24,26 @@ void __wrap_wait_a_second() return; } +void sane_kds_s2000w_net_read_cancel_test() +{ + handler* h = init_handler(); + h->read_info->scan_started = 1; + h->read_info->cancel = 1; + int* length = malloc(sizeof(int)); + *length = 0; + + SANE_Status status = _sane_kds_s2000w_net_read(h, NULL, 0, length); + + assert_int_equal(h->read_info->cancel, 0); + assert_int_equal(h->read_info->scan_started, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); + + free(length); + length = NULL; + free_handler(h); + h = NULL; +} + void sane_kds_s2000w_net_read_without_data() { int length = 0; diff --git a/tests/kds_s2000w_net_read_tests.h b/tests/kds_s2000w_net_read_tests.h index cce2a3e..b306155 100644 --- a/tests/kds_s2000w_net_read_tests.h +++ b/tests/kds_s2000w_net_read_tests.h @@ -6,6 +6,7 @@ #include #include +void sane_kds_s2000w_net_read_cancel_test(); void sane_kds_s2000w_net_read_without_data(); void sane_kds_s2000w_net_read_empty_image(); void sane_kds_s2000w_net_read_without_header_test(); diff --git a/tests/kds_s2000w_net_read_tests_run.c b/tests/kds_s2000w_net_read_tests_run.c index ba50bd4..47cef1d 100644 --- a/tests/kds_s2000w_net_read_tests_run.c +++ b/tests/kds_s2000w_net_read_tests_run.c @@ -3,6 +3,7 @@ int main() { const struct CMUnitTest net_read_tests[] = { + cmocka_unit_test(sane_kds_s2000w_net_read_cancel_test), cmocka_unit_test(sane_kds_s2000w_net_read_without_data), cmocka_unit_test(sane_kds_s2000w_net_read_empty_image), cmocka_unit_test(sane_kds_s2000w_net_read_without_header_test), diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index 338be58..05f1f7b 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -112,6 +112,21 @@ void kds_s2000w_net_get_select_fd() assert_int_equal(result, SANE_STATUS_UNSUPPORTED); } + +void sane_kds_s2000w_net_start_cancel() +{ + handler* h = init_handler(); + h->read_info->cancel = 1; + + SANE_Status status = _sane_kds_s2000w_net_start(h); + + assert_int_equal(h->read_info->cancel, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); + + free_handler(h); + h = NULL; +} + void sane_kds_s2000w_net_start(void** state) { response** response_list = (response**) *state; @@ -513,6 +528,20 @@ void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state) h = NULL; } +void sane_kds_s2000w_net_get_parameter_cancel() +{ + handler* h = init_handler(); + h->read_info->cancel = 1; + + SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, NULL); + + assert_int_equal(h->read_info->cancel, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); + + free_handler(h); + h = NULL; +} + void sane_kds_s2000w_net_cancel() { response* resp = kds_s2000w_client_response_init(); diff --git a/tests/kds_s2000w_net_tests.h b/tests/kds_s2000w_net_tests.h index 41fdd70..9a9a419 100644 --- a/tests/kds_s2000w_net_tests.h +++ b/tests/kds_s2000w_net_tests.h @@ -12,11 +12,13 @@ void kds_s2000w_net_init(); void kds_s2000w_net_get_devices_only_remote(); void kds_s2000w_net_set_io_mode(); void kds_s2000w_net_get_select_fd(); +void sane_kds_s2000w_net_start_cancel(); void sane_kds_s2000w_net_start(void** state); void sane_kds_s2000w_net_start_one_page_per_flatscan(void** state); void sane_kds_s2000w_net_start_one_page_per_feeder(void** state); void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state); void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state); +void sane_kds_s2000w_net_get_parameter_cancel(); void sane_kds_s2000w_net_cancel(); void sane_kds_s2000w_net_open(); void sane_kds_s2000w_net_open_busy_device(); diff --git a/tests/kds_s2000w_net_tests_run.c b/tests/kds_s2000w_net_tests_run.c index 816dd08..d41cade 100644 --- a/tests/kds_s2000w_net_tests_run.c +++ b/tests/kds_s2000w_net_tests_run.c @@ -69,6 +69,8 @@ int main() cmocka_unit_test(kds_s2000w_net_get_devices_only_remote), cmocka_unit_test(kds_s2000w_net_set_io_mode), cmocka_unit_test(kds_s2000w_net_get_select_fd), + cmocka_unit_test(sane_kds_s2000w_net_start_cancel), + cmocka_unit_test(sane_kds_s2000w_net_get_parameter_cancel), cmocka_unit_test(sane_kds_s2000w_net_cancel), cmocka_unit_test(sane_kds_s2000w_net_open), cmocka_unit_test(sane_kds_s2000w_net_open_busy_device),