Takashi Iwai
40f03e5367
- Fix alsamixer color config regression: 0001-alsamixer-Fix-regression-in-color-setup.patch OBS-URL: https://build.opensuse.org/request/show/947884 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa-utils?expand=0&rev=199
106 lines
2.8 KiB
Diff
106 lines
2.8 KiB
Diff
From 40202a522aa86599bffaabf8097bf9bf1cef4f61 Mon Sep 17 00:00:00 2001
|
|
From: Takashi Iwai <tiwai@suse.de>
|
|
Date: Thu, 20 Jan 2022 08:49:17 +0100
|
|
Subject: [PATCH] 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>
|
|
---
|
|
alsamixer/cli.c | 8 ++++----
|
|
alsamixer/colors.c | 13 ++++++++++++-
|
|
alsamixer/colors.h | 2 +-
|
|
alsamixer/configparser.c | 2 +-
|
|
4 files changed, 18 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/alsamixer/cli.c b/alsamixer/cli.c
|
|
index 63c4949bab96..f153f280cd9f 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 f76dc26ef380..cca5233e82cd 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 1c7bff8e7d32..ac404e9ccc16 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 4396d4ff302e..b2b55f4754bc 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");
|
|
--
|
|
2.31.1
|
|
|