From 13cb6ad835a049370978d775da26bb63754e1a64 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Wed, 18 Oct 2023 14:49:29 +0800 Subject: [PATCH] blocking during stop() call until all worker-threads exit --- hgdriver/hgdev/scanner_manager.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index bacb681..445177e 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -1056,7 +1056,13 @@ scanner_err hg_scanner_mgr::hg_scanner_start(scanner_handle h, void* async_event } scanner_err hg_scanner_mgr::hg_scanner_stop(scanner_handle h) { - return (scanner_err)SCAN_PTR(h)->stop(); + scanner_err err = (scanner_err)SCAN_PTR(h)->stop(); + + // call from APP, block when all working-threads stopped - added on 2023-10-18 when handled double-feeding in SANE + while (SCAN_PTR(h)->is_running() != hg_scanner::THREAD_RUNNING_IDLE) + std::this_thread::sleep_for(std::chrono::milliseconds(3)); + + return err; } scanner_err hg_scanner_mgr::hg_scanner_get_img_info(scanner_handle h, SANE_Parameters* bmi, long len) {