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 85b5306..9461855 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 2bf74ae..baa1c51 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 d76aaf4..c663fd8 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 e62e862..03fa096 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 78b0a1d..5337306 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: