Skip to content

Commit

Permalink
kconfig: pass new conf_changed value to the callback
Browse files Browse the repository at this point in the history
Commit ee06a3e ("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>
  • Loading branch information
Masahiro Yamada committed Jul 15, 2024
1 parent 0b62fe4 commit 03638aa
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 14 deletions.
10 changes: 4 additions & 6 deletions scripts/kconfig/confdata.c
Original file line number Diff line number Diff line change
Expand Up @@ -1141,24 +1141,22 @@ 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)
{
return conf_changed;
}

void conf_set_changed_callback(void (*fn)(void))
void conf_set_changed_callback(void (*fn)(bool))
{
conf_changed_callback = fn;
}
Expand Down
7 changes: 3 additions & 4 deletions scripts/kconfig/gconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
2 changes: 1 addition & 1 deletion scripts/kconfig/lkc_proto.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/qconf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion scripts/kconfig/qconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 03638aa

Please sign in to comment.