调整回调注册时机

This commit is contained in:
gb 2022-09-21 16:44:41 +08:00
parent f40484650d
commit 5dbba10ee1
1 changed files with 8 additions and 2 deletions

View File

@ -85,8 +85,14 @@ namespace callback
if (it != g_scanner_instances.end())
return it->invoker->handle_device_event(code, data, len);
else
{
wchar_t msg[218] = { 0 };
swprintf_s(msg, _countof(msg) - 1, L"Lost device(0x%08X) when event(%u) occurs!\r\n", hdev, code);
log_info(msg, 0);
return 0;
}
}
void reg_callback(SANE_Handle dev, scanner* invoker)
{
std::lock_guard<std::mutex> lock(cb_lock_);
@ -132,7 +138,6 @@ scanner::scanner(SCANNERID id) : handle_(NULL), id_(id), ex_id_(EXTENSION_ID_BAS
}
scanner::~scanner()
{
callback::unreg_callback(this);
if (cfg_)
delete cfg_;
}
@ -282,8 +287,8 @@ int scanner::open(void)
ret = hg_sane_middleware::instance()->open_device(name.c_str(), &handle_);
if (ret == SANE_STATUS_GOOD)
{
scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8);
callback::reg_callback(handle_, this);
scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8);
ret = init_options_id();
load_config((cfg_path_ + scanner_name_).c_str());
// apply_config();
@ -293,6 +298,7 @@ int scanner::open(void)
}
int scanner::close(void)
{
callback::unreg_callback(this);
if (handle_)
hg_sane_middleware::instance()->close_device(handle_);
handle_ = NULL;