kconfig: pass new conf_changed value to the callback
authorMasahiro Yamada <masahiroy@kernel.org>
Sat, 1 Jun 2024 18:20:43 +0000 (03:20 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 15 Jul 2024 16:08:36 +0000 (01:08 +0900)
Commit ee06a3ef7e3c ("kconfig: Update config changed flag before calling
callback") pointed out that conf_updated flag must be updated _before_
calling the callback, which needs to know the new value.

Given that, it makes sense to directly pass the new value to the
callback.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/confdata.c
scripts/kconfig/gconf.c
scripts/kconfig/lkc_proto.h
scripts/kconfig/qconf.cc
scripts/kconfig/qconf.h

index 85b53069ba7a40d992b35e6f109e9c3ca2bb8012..94618550638095db10179a303bbdd434e132ce6c 100644 (file)
@@ -1141,16 +1141,14 @@ int conf_write_autoconf(int overwrite)
 }
 
 static bool conf_changed;
-static void (*conf_changed_callback)(void);
+static void (*conf_changed_callback)(bool);
 
 void conf_set_changed(bool val)
 {
-       bool changed = conf_changed != val;
+       if (conf_changed_callback && conf_changed != val)
+               conf_changed_callback(val);
 
        conf_changed = val;
-
-       if (conf_changed_callback && changed)
-               conf_changed_callback();
 }
 
 bool conf_get_changed(void)
@@ -1158,7 +1156,7 @@ bool conf_get_changed(void)
        return conf_changed;
 }
 
-void conf_set_changed_callback(void (*fn)(void))
+void conf_set_changed_callback(void (*fn)(bool))
 {
        conf_changed_callback = fn;
 }
index 2bf74aee5eff506810e7f7d34f29875b52aff6a5..baa1c512de3c153a88e6b62c2f5284d0a10e8574 100644 (file)
@@ -84,11 +84,10 @@ static void replace_button_icon(GladeXML *xml, GdkDrawable *window,
        gtk_tool_button_set_icon_widget(button, image);
 }
 
-static void conf_changed(void)
+static void conf_changed(bool dirty)
 {
-       bool changed = conf_get_changed();
-       gtk_widget_set_sensitive(save_btn, changed);
-       gtk_widget_set_sensitive(save_menu_item, changed);
+       gtk_widget_set_sensitive(save_btn, dirty);
+       gtk_widget_set_sensitive(save_menu_item, dirty);
 }
 
 /* Main Window Initialization */
index d76aaf4ea11763bda1ef087c43714b24492ae63c..c663fd8b35d263583e26859b4f9c1ac11b33108e 100644 (file)
@@ -13,7 +13,7 @@ int conf_write(const char *name);
 int conf_write_autoconf(int overwrite);
 void conf_set_changed(bool val);
 bool conf_get_changed(void);
-void conf_set_changed_callback(void (*fn)(void));
+void conf_set_changed_callback(void (*fn)(bool));
 void conf_set_message_callback(void (*fn)(const char *s));
 bool conf_errors(void);
 
index e62e862ea283ec0021ea28e7e08c2941015c05ed..03fa096074b4ad7c5b35fe5ff9a7eb423dcac69a 100644 (file)
@@ -1849,10 +1849,10 @@ void ConfigMainWindow::saveSettings(void)
        configSettings->writeSizes("/split2", split2->sizes());
 }
 
-void ConfigMainWindow::conf_changed(void)
+void ConfigMainWindow::conf_changed(bool dirty)
 {
        if (saveAction)
-               saveAction->setEnabled(conf_get_changed());
+               saveAction->setEnabled(dirty);
 }
 
 void fixup_rootmenu(struct menu *menu)
index 78b0a1dfcd53dee44083dcf3d0efdcd0bd905998..53373064d90ace9cc779482b16004897c93d0519 100644 (file)
@@ -239,7 +239,7 @@ class ConfigMainWindow : public QMainWindow {
 
        char *configname;
        static QAction *saveAction;
-       static void conf_changed(void);
+       static void conf_changed(bool);
 public:
        ConfigMainWindow(void);
 public slots: