From: Takashi Iwai Date: Thu, 20 Jan 2022 07:49:17 +0000 (+0100) Subject: alsamixer: Fix regression in color setup X-Git-Tag: v1.2.7~38 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=40202a522aa86599bffaabf8097bf9bf1cef4f61;p=alsa-utils.git alsamixer: Fix regression in color setup The recent change to add the background config broke the color setup via the config file due. Fix the regression by restoring the initialization order back again, and changing the logic for the default background color to be re-initializing color pairs instead. Link: https://github.com/alsa-project/alsa-utils/issues/137 Signed-off-by: Takashi Iwai --- diff --git a/alsamixer/cli.c b/alsamixer/cli.c index 63c4949..f153f28 100644 --- a/alsamixer/cli.c +++ b/alsamixer/cli.c @@ -152,15 +152,15 @@ int main(int argc, char *argv[]) parse_options(argc, argv); + create_mixer_object(&selem_regopt); + + initialize_curses(use_color, use_mouse); + if (config_file == CONFIG_DEFAULT) parse_default_config_file(); else if (config_file) parse_config_file(config_file); - create_mixer_object(&selem_regopt); - - initialize_curses(use_color, use_mouse); - create_mixer_widget(); mainloop(); diff --git a/alsamixer/colors.c b/alsamixer/colors.c index f76dc26..cca5233 100644 --- a/alsamixer/colors.c +++ b/alsamixer/colors.c @@ -23,7 +23,7 @@ #include "colors.h" struct attributes attrs; -short background_color = -1; +static short background_color = -1; int get_color_pair(short fg, short bg) { @@ -45,6 +45,17 @@ int get_color_pair(short fg, short bg) return 0; } +void reinit_colors(short bg) +{ + if (bg == background_color) + return; + init_pair(1, COLOR_CYAN, bg); + init_pair(2, COLOR_YELLOW, bg); + init_pair(4, COLOR_RED, bg); + init_pair(5, COLOR_WHITE, bg); + background_color = bg; +} + void init_colors(int use_color) { if (!!has_colors() == !!use_color) { diff --git a/alsamixer/colors.h b/alsamixer/colors.h index 1c7bff8..ac404e9 100644 --- a/alsamixer/colors.h +++ b/alsamixer/colors.h @@ -34,9 +34,9 @@ struct attributes { }; extern struct attributes attrs; -extern short background_color; void init_colors(int use_color); +void reinit_colors(short bg); int get_color_pair(short fg, short bg); #endif diff --git a/alsamixer/configparser.c b/alsamixer/configparser.c index 4396d4f..b2b55f4 100644 --- a/alsamixer/configparser.c +++ b/alsamixer/configparser.c @@ -451,7 +451,7 @@ static int cfg_set(char **argv, unsigned int argc) error_cause = argv[1]; return ERROR_CONFIG; } - background_color = bg_color; + reinit_colors(bg_color); } else { error_message = _("unknown option");