start时阻塞到有图片返回或者异常结束才返回。fix bug-726

This commit is contained in:
gb 2023-11-21 17:49:07 +08:00
parent 07079f2776
commit c838a6dc47
1 changed files with 20 additions and 20 deletions

View File

@ -807,26 +807,23 @@ void scanner::scan_done(void)
else if (ui_notify)
ui_notify(SANE_EVENT_SCAN_FINISHED, &msg[0], err_);
else
is_scanning_ = false;
//else
//{
// if (err_)
// {
// if (callback::show_messagebox_ui)
// {
// callback::show_messagebox_ui(app_wnd_, SANE_EVENT_SCAN_FINISHED, (void*)&msg[0], 0);
// }
// else // windows message box ...
// {
// std::wstring text(local_trans::a2u(msg.c_str(), CP_UTF8));
// if (!IsWindow(app_wnd_))
// callback::bring_message_box_topmost(local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str());
// MessageBoxW(app_wnd_, text.c_str(), local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str(), MB_OK);
// }
// }
// on_ui_event(SANE_EVENT_SCAN_FINISHED, (void*)SANE_EVENT_SCAN_FINISHED);
//}
// is_scanning_ = false;
{
if (err_)
{
if (callback::show_messagebox_ui)
{
callback::show_messagebox_ui(app_wnd_, SANE_EVENT_SCAN_FINISHED, (void*)&msg[0], 0);
}
else // windows message box ...
{
std::wstring text(local_trans::a2u(msg.c_str(), CP_UTF8));
if (!IsWindow(app_wnd_))
callback::bring_message_box_topmost(local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str());
MessageBoxW(app_wnd_, text.c_str(), local_trans::lang_trans_between_hz936(CONST_STRING_ERROR).c_str(), MB_OK);
}
}
on_ui_event(SANE_EVENT_SCAN_FINISHED, (void*)SANE_EVENT_SCAN_FINISHED);
}
is_in_working_thread_ = false;
}
@ -2781,12 +2778,15 @@ COM_API_IMPLEMENT(scanner, int, start(void))
user_cancel_ = false;
fetch_imgs_ = 0;
is_scanning_ = true;
err_ = SANE_STATUS_GOOD;
app_wnd_ = setting_ ? setting_->hwnd() : callback::find_main_wnd();
if (thread_starting_.get() && thread_starting_->joinable())
thread_starting_->join();
#ifdef START_SCAN_IN_THREAD
thread_starting_.reset(new std::thread(&scanner::thread_start, this));
get_scanned_images(-1); // block until image arrived or scan finished
ret = err_;
#else
ret = thread_start();
#endif