From 1b3e2be09ed90117f5d5395bf6bee1c07b62c2ef Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 30 Nov 2023 09:11:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8F=96=E6=B6=88=E6=89=AB?= =?UTF-8?q?=E6=8F=8F=E6=97=B6=EF=BC=8C=E6=9C=AA=E5=8F=96=E5=88=B0=E5=9B=BE?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=BF=9B=E5=BA=A6=E6=8C=87=E7=A4=BA=E5=99=A8?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sane/scanner.cpp | 23 +++++++++++++++++++++-- twain/twain/huagaods.cpp | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/sane/scanner.cpp b/sane/scanner.cpp index 6860cd9..b3c2fc3 100644 --- a/sane/scanner.cpp +++ b/sane/scanner.cpp @@ -807,8 +807,27 @@ void scanner::scan_done(void) { std::string msg(scan_msg_); - while (images_.count()) - std::this_thread::sleep_for(std::chrono::milliseconds(5)); + if (err_ != SCANNER_ERR_USER_CANCELED) + { + int cnt = images_.count(), elapse = 0, + unit = 5, total = 1000; + + while (cnt) + { + std::this_thread::sleep_for(std::chrono::milliseconds(unit)); + elapse++; + if (cnt == images_.count()) + { + if (elapse >= total / unit) + break; + } + else + { + elapse = 0; + } + cnt = images_.count(); + } + } if (indicator_) indicator_->notify_scan_over(&msg[0], err_ != SCANNER_ERR_OK); diff --git a/twain/twain/huagaods.cpp b/twain/twain/huagaods.cpp index 579b502..277118f 100644 --- a/twain/twain/huagaods.cpp +++ b/twain/twain/huagaods.cpp @@ -1699,7 +1699,7 @@ Result huagao_ds::call(const Identity& origin, DataGroup dg, Dat dat, Msg msg, v //trigger_ProcessEvent(dg, dat, msg); // some APPs may be not trigger (Control, Event, ProcessEvent), we help them :( ... // 浜戦槄鍗锋壂鎻忕涓嶇瓑鐘舵€佹敼鍙橈紝鐩存帴鍙栧浘锛屾澶勮缃竴娆$姸鎬?2022-11-07 rt = Base::call(origin, dg, dat, msg, data); - if (log_all_triple_ || ((int)rt.returnCode() && rt.returnCode() != ReturnCode::NotDsEvent)) + if (log_all_triple_ || ((int)rt.returnCode() && rt.returnCode() != ReturnCode::NotDsEvent && msg != Msg::ProcessEvent)) { wchar_t dgs[20] = { 0 }, dts[20] = { 0 }, ms[20] = { 0 }, ss[20] = { 0 }, rcs[20] = { 0 }, cs[20] = { 0 }; if (dat == Dat::Capability)