v4.28: 修改配置保存未将float转为SANE_Fixed的BUG

This commit is contained in:
gb 2022-09-27 09:48:57 +08:00
parent b764b210e9
commit 32b61ba139
5 changed files with 35 additions and 9 deletions

View File

@ -51,8 +51,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,27,10000,22266 FILEVERSION 4,28,10000,22270
PRODUCTVERSION 4,27,10000,22266 PRODUCTVERSION 4,28,10000,22270
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -69,12 +69,12 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "宁波华高信息科技有限公司" VALUE "CompanyName", "宁波华高信息科技有限公司"
VALUE "FileDescription", "华高扫描仪应用程序" VALUE "FileDescription", "华高扫描仪应用程序"
VALUE "FileVersion", "4.27.10000.22266" VALUE "FileVersion", "4.28.10000.22270"
VALUE "InternalName", "scanner.dll" VALUE "InternalName", "scanner.dll"
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022" VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
VALUE "OriginalFilename", "scanner.dll" VALUE "OriginalFilename", "scanner.dll"
VALUE "ProductName", "HUAGOScan" VALUE "ProductName", "HUAGOScan"
VALUE "ProductVersion", "4.27.10000.22266" VALUE "ProductVersion", "4.28.10000.22270"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -1085,4 +1085,13 @@ namespace gb
else else
return ""; return "";
} }
std::string sane_config::get_version(void)
{
std::string ver("");
if (jsn_)
jsn_->get_value("ver", ver);
return ver;
}
} }

View File

@ -113,5 +113,6 @@ namespace gb
void end_setting(bool cancel); void end_setting(bool cancel);
int id_from_title(const char* title); int id_from_title(const char* title);
std::string to_text_stream(void); std::string to_text_stream(void);
std::string get_version(void);
}; };
} }

View File

@ -248,8 +248,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,27,10000,22266 FILEVERSION 4,28,10000,22270
PRODUCTVERSION 4,27,10000,22266 PRODUCTVERSION 4,28,10000,22270
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -266,12 +266,12 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "宁波华高信息科技有限公司" VALUE "CompanyName", "宁波华高信息科技有限公司"
VALUE "FileDescription", "华高扫描仪应用程序" VALUE "FileDescription", "华高扫描仪应用程序"
VALUE "FileVersion", "4.27.10000.22266" VALUE "FileVersion", "4.28.10000.22270"
VALUE "InternalName", "sane.dll" VALUE "InternalName", "sane.dll"
VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022" VALUE "LegalCopyright", "Copyright (C) HUAGOScan 2022"
VALUE "OriginalFilename", "sane.dll" VALUE "OriginalFilename", "sane.dll"
VALUE "ProductName", "HUAGOScan" VALUE "ProductName", "HUAGOScan"
VALUE "ProductVersion", "4.27.10000.22266" VALUE "ProductVersion", "4.28.10000.22270"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -236,7 +236,7 @@ void scanner::save_config(const wchar_t* file)
} }
void scanner::apply_config(void) void scanner::apply_config(void)
{ {
std::string t(""), v(""); std::string t(""), v(""), ver(cfg_->get_version());
if (cfg_->first_config(t, v)) if (cfg_->first_config(t, v))
{ {
do do
@ -245,6 +245,7 @@ void scanner::apply_config(void)
if (id != -1) if (id != -1)
{ {
void* data = &v[0]; void* data = &v[0];
SANE_Fixed fixed = 0;
const SANE_Option_Descriptor* desc = hg_sane_middleware::instance()->get_option_descriptor(handle_, id); const SANE_Option_Descriptor* desc = hg_sane_middleware::instance()->get_option_descriptor(handle_, id);
if (desc) if (desc)
{ {
@ -256,6 +257,21 @@ void scanner::apply_config(void)
strcpy(buf, v.c_str()); strcpy(buf, v.c_str());
data = buf; data = buf;
} }
else if (ver.empty() && desc->type == SANE_TYPE_FIXED) // 升级早期版本没将float转为SANE_Fixed的BUG
{
fixed = SANE_FIX(*(float*)data);
cfg_->config_changed(t.c_str(), (char*)&fixed, sizeof(fixed));
data = &fixed;
{
wchar_t msg[128] = { 0 };
unsigned char* f = (unsigned char*)&v[0], * to = (unsigned char*)data;
swprintf_s(msg, _countof(msg) - 1, L"Upgrage '%s' from '%02X%02X%02X%02X' to '%02X%02X%02X%02X'\r\n"
, local_trans::a2u(t.c_str(), CP_UTF8).c_str(), f[0], f[1], f[2], f[3]
, to[0], to[1], to[2], to[3]);
log_info(msg, 0);
}
}
SANE_Int after = 0; SANE_Int after = 0;
hg_sane_middleware::instance()->set_option(handle_, id, SANE_ACTION_SET_VALUE, data, &after); hg_sane_middleware::instance()->set_option(handle_, id, SANE_ACTION_SET_VALUE, data, &after);
if (buf) if (buf)