From 0fa484ac559f814f09cc80a677ccc388dfe06dbf Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Fri, 14 Apr 2023 23:57:09 +0300 Subject: [PATCH] log: map spa ERROR and WARN to GLib's CRITICAL and WARNING respectively Previously we were mapping SPA ERROR to GLib WARNING and SPA WARN to GLib MESSAGE, which has been causing some confusion. After some careful consideration, it makes sense to change that and leave the GLib MESSAGE level as something to be avoided. With that change, WIREPLUMBER_DEBUG=M will still enable the MESSAGE level, but WIREPLUMBER_DEBUG=2 will only enable the WARN level and it will take WIREPLUMBER_DEBUG=3 to enable both the INFO and MESSAGE levels. --- lib/wp/log.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/wp/log.c b/lib/wp/log.c index 96d192db..773ac64d 100644 --- a/lib/wp/log.c +++ b/lib/wp/log.c @@ -232,10 +232,10 @@ static const struct { gchar priority[2]; gchar color[8]; } log_level_info[] = { - { 0, 0, "U", "5", COLOR_BRIGHT_RED }, - { G_LOG_LEVEL_ERROR, 0, "E", "3", COLOR_RED }, - { G_LOG_LEVEL_CRITICAL,0, "C", "4", COLOR_BRIGHT_MAGENTA }, - { G_LOG_LEVEL_WARNING, SPA_LOG_LEVEL_ERROR,"W", "4", COLOR_BRIGHT_YELLOW }, + { 0, 0, "U", "5", COLOR_BRIGHT_MAGENTA }, + { G_LOG_LEVEL_ERROR, 0, "E", "3", COLOR_BRIGHT_RED }, + { G_LOG_LEVEL_CRITICAL,SPA_LOG_LEVEL_ERROR,"C", "4", COLOR_RED }, + { G_LOG_LEVEL_WARNING, SPA_LOG_LEVEL_WARN, "W", "4", COLOR_BRIGHT_YELLOW }, { G_LOG_LEVEL_MESSAGE, SPA_LOG_LEVEL_WARN, "M", "5", COLOR_BRIGHT_GREEN }, { G_LOG_LEVEL_INFO, SPA_LOG_LEVEL_INFO, "I", "6", COLOR_GREEN }, { G_LOG_LEVEL_DEBUG, SPA_LOG_LEVEL_DEBUG,"D", "7", COLOR_BRIGHT_CYAN }, @@ -254,16 +254,27 @@ log_level_index (GLogLevelFlags log_level) return (logarithm >= 2 && logarithm <= 8) ? (logarithm - 1) : 0; } +/* map a SPA_LOG_LEVEL_* to an index in the log_level_info table; + index 4 (G_LOG_LEVEL_MESSAGE) can never be returned */ static G_GNUC_CONST inline gint level_index_from_spa (gint spa_lvl) { - return CLAMP (spa_lvl + 2, 0, (gint) G_N_ELEMENTS (log_level_info) - 1); + if (G_UNLIKELY (spa_lvl <= SPA_LOG_LEVEL_NONE)) + return 0; + else if (spa_lvl < SPA_LOG_LEVEL_INFO) + return spa_lvl + 1; + else if (G_UNLIKELY (spa_lvl > SPA_LOG_LEVEL_TRACE)) + return (gint) G_N_ELEMENTS (log_level_info) - 1; + else + return spa_lvl + 2; } +/* map an index in the log_level_info table to a SPA_LOG_LEVEL_* + here, G_LOG_LEVEL_MESSAGE maps to SPA_LOG_LEVEL_WARN */ static G_GNUC_CONST inline gint level_index_to_spa (gint lvl_index) { - return CLAMP (lvl_index - 2, 0, 5); + return log_level_info [lvl_index].spa_level; } static inline void