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 <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2022-01-20 08:49:17 +01:00
parent fca9d89bbc
commit 40202a522a
4 changed files with 18 additions and 7 deletions

View file

@ -152,15 +152,15 @@ int main(int argc, char *argv[])
parse_options(argc, argv); parse_options(argc, argv);
create_mixer_object(&selem_regopt);
initialize_curses(use_color, use_mouse);
if (config_file == CONFIG_DEFAULT) if (config_file == CONFIG_DEFAULT)
parse_default_config_file(); parse_default_config_file();
else if (config_file) else if (config_file)
parse_config_file(config_file); parse_config_file(config_file);
create_mixer_object(&selem_regopt);
initialize_curses(use_color, use_mouse);
create_mixer_widget(); create_mixer_widget();
mainloop(); mainloop();

View file

@ -23,7 +23,7 @@
#include "colors.h" #include "colors.h"
struct attributes attrs; struct attributes attrs;
short background_color = -1; static short background_color = -1;
int get_color_pair(short fg, short bg) int get_color_pair(short fg, short bg)
{ {
@ -45,6 +45,17 @@ int get_color_pair(short fg, short bg)
return 0; 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) void init_colors(int use_color)
{ {
if (!!has_colors() == !!use_color) { if (!!has_colors() == !!use_color) {

View file

@ -34,9 +34,9 @@ struct attributes {
}; };
extern struct attributes attrs; extern struct attributes attrs;
extern short background_color;
void init_colors(int use_color); void init_colors(int use_color);
void reinit_colors(short bg);
int get_color_pair(short fg, short bg); int get_color_pair(short fg, short bg);
#endif #endif

View file

@ -451,7 +451,7 @@ static int cfg_set(char **argv, unsigned int argc)
error_cause = argv[1]; error_cause = argv[1];
return ERROR_CONFIG; return ERROR_CONFIG;
} }
background_color = bg_color; reinit_colors(bg_color);
} }
else { else {
error_message = _("unknown option"); error_message = _("unknown option");