From 776541ad7727404d96a39c8c32221b7831b6371b Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Sat, 17 Jun 2023 16:11:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E6=97=B6=EF=BC=8C=E9=80=9A=E8=BF=87=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8=E6=B5=81=E7=A8=8B=E4=B8=AD=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E4=B8=8D=E9=87=8D=E5=A4=8D=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgsane/sane_hg_mdw.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index 67ee5c5..afc16a2 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -532,7 +532,7 @@ hg_sane_middleware::hg_sane_middleware(void) : opt_0_(nullptr), init_ok_(false) if (lang_get_cur_code_page() != DEFAULT_CODE_PAGE) lang_refresh_language(); - // register_language_changed_notify(&hg_sane_middleware::language_changed, true); - called when reload_option + register_language_changed_notify(&hg_sane_middleware::language_changed, true); #if !defined(WIN32) && !defined(_WIN64) char path[512] = { 0 }; @@ -1977,7 +1977,8 @@ SANE_Status hg_sane_middleware::set_option(SANE_Handle h, const void* option, SA { VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "the setting '%s' affects other options value, RELOAD ...\n", desc_title.c_str()); //on_SCANNER_ERR_CONFIGURATION_CHANGED(dev); - reload_options(handle); + if(dev->fixed_id.count(SANE_OPT_ID_LANGUAGE) && dev->fixed_id[SANE_OPT_ID_LANGUAGE] != id) // language reload by callback already + reload_options(handle); err = (scanner_err)SANE_INFO_RELOAD_OPTIONS; } else if(err == SCANNER_ERR_RELOAD_IMAGE_PARAM) @@ -1989,7 +1990,8 @@ SANE_Status hg_sane_middleware::set_option(SANE_Handle h, const void* option, SA { 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.c_str()); //on_SCANNER_ERR_CONFIGURATION_CHANGED(dev); - reload_options(handle); + if (dev->fixed_id.count(SANE_OPT_ID_LANGUAGE) && dev->fixed_id[SANE_OPT_ID_LANGUAGE] != id) // language reload by callback already + reload_options(handle); err = (scanner_err)(SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS); } else if (err == SCANNER_ERR_ACCESS_DENIED) From acf836648d9df4393c14cc220ccd5d7a543a335c Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Sat, 17 Jun 2023 16:52:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E5=83=8F?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=BD=AC=E6=8D=A2=E5=8F=8A=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E9=A9=B1=E5=8A=A8=E5=86=85=E5=AD=98=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/scanner_manager.cpp | 18 +++++++++++++++++- hgsane/sane_hg_mdw.cpp | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index 03bc522..09f3a76 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -908,7 +908,9 @@ scanner_err hg_scanner_mgr::hg_scanner_get_parameter(scanner_handle h, const cha return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_GET_CUSTOM_GAMMA, data, (unsigned int*)len); if (strcmp(SANE_STD_OPT_NAME_LOGIN, name) == 0 || - strcmp(SANE_STD_OPT_NAME_LOGOUT, name) == 0) + strcmp(SANE_STD_OPT_NAME_LOGOUT, name) == 0 || + strcmp(SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT, name) == 0 || + strcmp(SANE_STD_OPT_NAME_FREE_BUFFER, name) == 0) return SCANNER_ERR_DEVICE_NOT_SUPPORT; if (strcmp(SANE_STD_OPT_NAME_ROLLER_LIFE, name) == 0) @@ -1002,6 +1004,20 @@ scanner_err hg_scanner_mgr::hg_scanner_set_parameter(scanner_handle h, const cha } else if (strcmp(SANE_STD_OPT_NAME_CUSTOM_GAMMA, name) == 0) return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_SET_CUSTOM_GAMMA, data, (unsigned int*)len); + else if (strcmp(SANE_STD_OPT_NAME_TRANSFORM_IMAGE_FORMAT, name) == 0) + { + return (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_CONVERT_IMAGE_FORMAT, data, (unsigned int*)len); + } + else if (strcmp(SANE_STD_OPT_NAME_FREE_BUFFER, name) == 0) + { + void* ptr = data ? *(void**)data : nullptr; + scanner_err ret = (scanner_err)SCAN_PTR(h)->device_io_control(IO_CTRL_CODE_FREE_MEMORY, ptr, (unsigned int*)len); + + if (data) + *(void**)data = nullptr; + + return ret; + } } return (scanner_err)SCAN_PTR(h)->set_setting(name, data, len); diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index afc16a2..f84a9c0 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -400,6 +400,8 @@ namespace local_utility FIX_ID_TO_NAME(ROLLER_LIFE, sizeof(SANE_Int)); FIX_ID_TO_NAME(CUSTOM_GAMMA, sizeof(SANE_Gamma)); + FIX_ID_TO_NAME(TRANSFORM_IMAGE_FORMAT, sizeof(SANE_ImageFormatConvert)); + FIX_ID_TO_NAME(FREE_BUFFER, sizeof(void*)); //FIX_ID_TO_NAME(LANGUAGE, 128); return "";