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

View File

@ -1085,4 +1085,13 @@ namespace gb
else
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);
int id_from_title(const char* title);
std::string to_text_stream(void);
std::string get_version(void);
};
}

View File

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

View File

@ -236,7 +236,7 @@ void scanner::save_config(const wchar_t* file)
}
void scanner::apply_config(void)
{
std::string t(""), v("");
std::string t(""), v(""), ver(cfg_->get_version());
if (cfg_->first_config(t, v))
{
do
@ -245,6 +245,7 @@ void scanner::apply_config(void)
if (id != -1)
{
void* data = &v[0];
SANE_Fixed fixed = 0;
const SANE_Option_Descriptor* desc = hg_sane_middleware::instance()->get_option_descriptor(handle_, id);
if (desc)
{
@ -256,6 +257,21 @@ void scanner::apply_config(void)
strcpy(buf, v.c_str());
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;
hg_sane_middleware::instance()->set_option(handle_, id, SANE_ACTION_SET_VALUE, data, &after);
if (buf)