From 123a0c5a3115d98b8abe6c13a73b4fa4c4c21056 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 30 Nov 2023 08:59:51 +0800 Subject: [PATCH] invoke sane_opt_provider::enable when options changed --- sdk/sane_opt_json/device_opt.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/sdk/sane_opt_json/device_opt.cpp b/sdk/sane_opt_json/device_opt.cpp index 146dd04..104bf46 100644 --- a/sdk/sane_opt_json/device_opt.cpp +++ b/sdk/sane_opt_json/device_opt.cpp @@ -1304,7 +1304,24 @@ gb_json* device_option::copy_opt(gb_json* from) // 2: enabled ... if (slaver_.count(to->key())) - to->set_value("enabled", slaver_[to->key()]->value(&device_option::calc_simple_logic_expression, this)); + { + bool enable = slaver_[to->key()]->value(&device_option::calc_simple_logic_expression, this); + to->set_value("enabled", enable); + if (src_.count(to->key())) + { + src_[to->key()]->enable(to->key().c_str(), enable); + + sane_opt_provider* next = src_[to->key()]->get_following(to->key().c_str()); + while (next) + { + next->enable(to->key().c_str(), enable); + + sane_opt_provider* next1 = next->get_following(to->key().c_str()); + next->release(); + next = next1; + } + } + } // 3: default value ... if (init_value_.count(to->key()))