调整回调注册时机

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()) if (it != g_scanner_instances.end())
return it->invoker->handle_device_event(code, data, len); return it->invoker->handle_device_event(code, data, len);
else 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; return 0;
} }
}
void reg_callback(SANE_Handle dev, scanner* invoker) void reg_callback(SANE_Handle dev, scanner* invoker)
{ {
std::lock_guard<std::mutex> lock(cb_lock_); 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() scanner::~scanner()
{ {
callback::unreg_callback(this);
if (cfg_) if (cfg_)
delete cfg_; delete cfg_;
} }
@ -282,8 +287,8 @@ int scanner::open(void)
ret = hg_sane_middleware::instance()->open_device(name.c_str(), &handle_); ret = hg_sane_middleware::instance()->open_device(name.c_str(), &handle_);
if (ret == SANE_STATUS_GOOD) if (ret == SANE_STATUS_GOOD)
{ {
scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8);
callback::reg_callback(handle_, this); callback::reg_callback(handle_, this);
scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8);
ret = init_options_id(); ret = init_options_id();
load_config((cfg_path_ + scanner_name_).c_str()); load_config((cfg_path_ + scanner_name_).c_str());
// apply_config(); // apply_config();
@ -293,6 +298,7 @@ int scanner::open(void)
} }
int scanner::close(void) int scanner::close(void)
{ {
callback::unreg_callback(this);
if (handle_) if (handle_)
hg_sane_middleware::instance()->close_device(handle_); hg_sane_middleware::instance()->close_device(handle_);
handle_ = NULL; handle_ = NULL;