修复xsane更改颜色模式……影响图像大小的参数时崩溃问题
This commit is contained in:
parent
a40f0015a9
commit
0d7b85cf27
|
@ -1383,7 +1383,7 @@ int hg_scanner::setting_color_mode(void* data)
|
|||
if(ret == SCANNER_ERR_NOT_EXACT)
|
||||
strcpy((char*)data, str.c_str());
|
||||
|
||||
return ret;
|
||||
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
|
||||
}
|
||||
int hg_scanner::setting_multi_out(void* data)
|
||||
{
|
||||
|
@ -1400,7 +1400,7 @@ int hg_scanner::setting_multi_out(void* data)
|
|||
//}
|
||||
//on_color_mode_changed(val);
|
||||
|
||||
return SCANNER_ERR_OK;
|
||||
return SCANNER_ERR_RELOAD_OPT_PARAM; // SCANNER_ERR_OK;
|
||||
}
|
||||
int hg_scanner::setting_multi_out_type(void* data)
|
||||
{
|
||||
|
@ -1421,7 +1421,7 @@ int hg_scanner::setting_multi_out_type(void* data)
|
|||
color = COLOR_MODE_24_BITS;
|
||||
|
||||
on_color_mode_changed(color);*/
|
||||
return ret;
|
||||
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
|
||||
}
|
||||
int hg_scanner::setting_rid_color(void* data)
|
||||
{
|
||||
|
@ -1539,7 +1539,7 @@ int hg_scanner::setting_paper(void* data)
|
|||
if(old != image_prc_param_.bits.paper)
|
||||
reset_custom_area_range(image_prc_param_.bits.paper);
|
||||
|
||||
return ret;
|
||||
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
|
||||
}
|
||||
int hg_scanner::setting_paper_check(void* data)
|
||||
{
|
||||
|
@ -1629,7 +1629,7 @@ int hg_scanner::setting_resolution(void* data)
|
|||
VLOG_MINI_3(LOG_LEVEL_DEBUG_INFO, "Change resolution from %d to %d = %s\n", old, *((int*)data), hg_scanner_err_name(ret));
|
||||
//*((int*)data) = resolution_;
|
||||
|
||||
return ret;
|
||||
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
|
||||
}
|
||||
int hg_scanner::setting_exchagnge(void* data)
|
||||
{
|
||||
|
@ -2929,7 +2929,8 @@ int hg_scanner::set_setting(const char* name, void* data, int len)
|
|||
ret = set_setting_value(real_n.c_str(), data, len);
|
||||
}
|
||||
|
||||
if (ret == SCANNER_ERR_OK || ret == SCANNER_ERR_NOT_EXACT || ret == SCANNER_ERR_CONFIGURATION_CHANGED)
|
||||
if (ret == SCANNER_ERR_OK || ret == SCANNER_ERR_NOT_EXACT || ret == SCANNER_ERR_CONFIGURATION_CHANGED
|
||||
|| ret == SCANNER_ERR_RELOAD_IMAGE_PARAM || ret == SCANNER_ERR_RELOAD_OPT_PARAM)
|
||||
{
|
||||
std::string type(""), name(get_setting_item_string(real_n.c_str(), "title"));
|
||||
|
||||
|
|
|
@ -211,6 +211,8 @@ extern "C"
|
|||
RETURN_IF(err, SCANNER_ERR_IO_PENDING);
|
||||
RETURN_IF(err, SCANNER_ERR_NOT_EXACT);
|
||||
RETURN_IF(err, SCANNER_ERR_CONFIGURATION_CHANGED);
|
||||
RETURN_IF(err, SCANNER_ERR_RELOAD_IMAGE_PARAM);
|
||||
RETURN_IF(err, SCANNER_ERR_RELOAD_OPT_PARAM);
|
||||
RETURN_IF(err, SCANNER_ERR_NOT_OPEN);
|
||||
RETURN_IF(err, SCANNER_ERR_NOT_START);
|
||||
RETURN_IF(err, SCANNER_ERR_NOT_ANY_MORE);
|
||||
|
@ -279,6 +281,8 @@ extern "C"
|
|||
RETURN_DESC_IF(err, SCANNER_ERR_IO_PENDING);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_NOT_EXACT);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_CONFIGURATION_CHANGED);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_RELOAD_IMAGE_PARAM);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_RELOAD_OPT_PARAM);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_NOT_OPEN);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_NOT_START);
|
||||
RETURN_DESC_IF(err, SCANNER_ERR_NOT_ANY_MORE);
|
||||
|
|
|
@ -51,6 +51,8 @@ namespace local_utility
|
|||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_IO_PENDING, SANE_STATUS_GOOD);
|
||||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_EXACT, SANE_STATUS_GOOD);
|
||||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_CONFIGURATION_CHANGED, SANE_STATUS_GOOD);
|
||||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_RELOAD_IMAGE_PARAM, SANE_STATUS_GOOD);
|
||||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_RELOAD_OPT_PARAM, SANE_STATUS_GOOD);
|
||||
//RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_OPEN, SANE_STATUS_NO_DOCS);
|
||||
//RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_START, SANE_STATUS_NO_DOCS);
|
||||
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NO_DATA, SANE_STATUS_EOF);
|
||||
|
@ -77,6 +79,8 @@ namespace local_utility
|
|||
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_IO_PENDING);
|
||||
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_NOT_EXACT);
|
||||
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_CONFIGURATION_CHANGED);
|
||||
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_RELOAD_IMAGE_PARAM);
|
||||
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_RELOAD_OPT_PARAM);
|
||||
//RETURN_MATCH_ERROR(statu, SANE_STATUS_NO_DOCS, SCANNER_ERR_NOT_OPEN);
|
||||
//RETURN_MATCH_ERROR(statu, SANE_STATUS_NO_DOCS, SCANNER_ERR_NOT_START);
|
||||
RETURN_MATCH_ERROR(statu, SANE_STATUS_EOF, SCANNER_ERR_NO_DATA);
|
||||
|
@ -171,7 +175,7 @@ namespace local_utility
|
|||
return str > bgn;
|
||||
}
|
||||
|
||||
// æš‚ä¸<EFBFBD>支æŒ<EFBFBD>科å¦è®¡æ•°æ³?1.2e+10
|
||||
// 暂不支持科学计数<EFBFBD>?1.2e+10
|
||||
bool get_number(const char*& str, double& val)
|
||||
{
|
||||
const char* bgn = str;
|
||||
|
@ -583,7 +587,7 @@ SANE_Option_Descriptor* hg_sane_middleware::string_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = values.size();
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
| SANE_CAP_AUTOMATIC; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
| SANE_CAP_AUTOMATIC; // 硬件可设置默认<EFBFBD>?
|
||||
if (values.size())
|
||||
{
|
||||
sod->constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||
|
@ -704,7 +708,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = sizeof(SANE_Word);
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
||||
|
||||
if (values.size())
|
||||
{
|
||||
|
@ -754,7 +758,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = sizeof(SANE_Word);
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
||||
|
||||
if (values.size())
|
||||
{
|
||||
|
@ -1015,7 +1019,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
|||
//if (jsn->get_value("enable", enabled) && !enabled)
|
||||
// ret->cap |= SANE_CAP_INACTIVE;
|
||||
|
||||
// å…³è<EFBFBD>”é¡?
|
||||
// 关联<EFBFBD>?
|
||||
json* depend = NULL;
|
||||
SLAVEOP so;
|
||||
if (jsn->get_value("depend_or", depend))
|
||||
|
@ -1371,7 +1375,7 @@ SANE_Status hg_sane_middleware::get_devices(const SANE_Device*** device_list, SA
|
|||
|
||||
if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
||||
{
|
||||
count += 4; // 为两次hg_scanner_enumé—´éš™å<EFBFBD>¯èƒ½æ–°å¢žçš„设备预留空é—?
|
||||
count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空<EFBFBD>?
|
||||
dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices");
|
||||
hgerr = hg_scanner_enum(dev, &count, local_only);
|
||||
if (hgerr != SCANNER_ERR_OK)
|
||||
|
@ -1674,6 +1678,17 @@ SANE_Status hg_sane_middleware::set_option(SANE_Handle h, const void* option, SA
|
|||
on_SCANNER_ERR_CONFIGURATION_CHANGED(dev);
|
||||
err = (scanner_err)SANE_INFO_RELOAD_OPTIONS;
|
||||
}
|
||||
else if(err == SCANNER_ERR_RELOAD_IMAGE_PARAM)
|
||||
{
|
||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "the setting '%s' affects image parameter, APP should re-get ...\n", desc->title);
|
||||
err = (scanner_err)SANE_INFO_RELOAD_PARAMS;
|
||||
}
|
||||
else if(err == SCANNER_ERR_RELOAD_OPT_PARAM)
|
||||
{
|
||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "the setting '%s' affects image parameter and options, APP should re-get image info and reload options...\n", desc->title);
|
||||
on_SCANNER_ERR_CONFIGURATION_CHANGED(dev);
|
||||
err = (scanner_err)(SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS);
|
||||
}
|
||||
else if (err == SCANNER_ERR_ACCESS_DENIED)
|
||||
{
|
||||
status = SANE_STATUS_ACCESS_DENIED;
|
||||
|
@ -1749,7 +1764,7 @@ bool hg_sane_middleware::is_ready(void)
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// å…³è<EFBFBD>”项处ç<EFBFBD>?
|
||||
/// 关联项处<EFBFBD>?
|
||||
bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r)
|
||||
{
|
||||
return strcmp(cur_val, limit_l) == 0;
|
||||
|
|
Loading…
Reference in New Issue