diff options
author | Gary Kramlich <grim@reaperworld.com> | 2020-11-01 04:47:52 -0600 |
---|---|---|
committer | Gary Kramlich <grim@reaperworld.com> | 2020-11-01 04:47:52 -0600 |
commit | 0cc168118b871224518756deaa8c9b94441a7227 (patch) | |
tree | b490e69a300f938564df14fba326502db4b2a842 | |
parent | dc1665630ac01eff9f8f71e9dcb986d4a4eab231 (diff) | |
download | pidgin-0cc168118b871224518756deaa8c9b94441a7227.tar.gz |
Clean up g_log handling
Clean up the way g_log messages are handled and remove a bunch of unnecessary stuff.
I removed the glibtrace stuff as this should really be done via `G_DEBUG=fatal-warnings` and not be a compile time option.
Testing Done:
Ran locally and verified that additional messages were showing up in the terminal (for domains that weren't previously listed).
Reviewed at https://reviews.imfreedom.org/r/183/
-rw-r--r-- | libpurple/meson.build | 2 | ||||
-rw-r--r-- | meson.build | 8 | ||||
-rw-r--r-- | meson_options.txt | 3 | ||||
-rw-r--r-- | pidgin/meson.build | 3 | ||||
-rw-r--r-- | pidgin/pidgindebug.c | 106 |
5 files changed, 29 insertions, 93 deletions
diff --git a/libpurple/meson.build b/libpurple/meson.build index b7f8073c19..27f3a5605b 100644 --- a/libpurple/meson.build +++ b/libpurple/meson.build @@ -271,7 +271,7 @@ libpurple = library('purple', purple_coresources + purple_builtsources + purple_builtheaders, 'purpleprivate.h', - c_args : ['-DPURPLE_COMPILATION'], + c_args : ['-DPURPLE_COMPILATION', '-DG_LOG_DOMAIN="Purple"'], include_directories : [toplevel_inc, libpurple_inc], install : true, version : PURPLE_LIB_VERSION, diff --git a/meson.build b/meson.build index a05a1085cc..fbe39a100e 100644 --- a/meson.build +++ b/meson.build @@ -545,14 +545,6 @@ endif pidginpath = find_program('pidgin', required : false) -if get_option('glib-errors-trace') - if compiler.get_id() == 'clang' - error('--enable-glib-errors-trace doesn\'t work with clang') - endif - conf.set('ENABLE_GLIBTRACE', true) - add_project_arguments('-rdynamic', language : 'c') -endif - ####################################################################### # Check for Unity and Messaging Menu # Remove when Ubuntu 16.04 is EOL diff --git a/meson_options.txt b/meson_options.txt index 126e8b2b2c..8524b77c18 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -7,9 +7,6 @@ option('doc', type : 'boolean', value : false, option('extraversion', type : 'string', description : 'extra version number to be displayed in Help->About and --help (for packagers)') -option('glib-errors-trace', type : 'boolean', value : false, - description : 'print backtraces for glib errors') - option('introspection', type : 'boolean', value : true, description : 'build introspection data') diff --git a/pidgin/meson.build b/pidgin/meson.build index d5798aa85f..e3d6f4512f 100644 --- a/pidgin/meson.build +++ b/pidgin/meson.build @@ -211,7 +211,7 @@ if ENABLE_GTK libpidgin = shared_library('pidgin3', libpidgin_SOURCES, package_revision, - c_args : ['-DPIDGIN_COMPILATION'], + c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_DOMAIN="Pidgin"'], include_directories : [toplevel_inc], version : PURPLE_LIB_VERSION, dependencies : _libpidgin_dependencies, @@ -223,6 +223,7 @@ if ENABLE_GTK pidgin = executable('pidgin3', pidgin_SOURCES, + c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_DOMAIN="Pidgin"'], include_directories : toplevel_inc, dependencies : IS_WIN32 ? [] : [libpurple_dep, libpidgin_dep], gui_app : true, diff --git a/pidgin/pidgindebug.c b/pidgin/pidgindebug.c index 057a3b24af..3c9c8b40ad 100644 --- a/pidgin/pidgindebug.c +++ b/pidgin/pidgindebug.c @@ -36,10 +36,6 @@ #include "pidgindebug.h" #include "pidginstock.h" -#ifdef ENABLE_GLIBTRACE -#include <execinfo.h> -#endif - #include <gdk/gdkkeysyms.h> #include "pidginresources.h" @@ -592,7 +588,7 @@ pidgin_debug_window_init(PidginDebugWindow *win) width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/width"); height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/height"); - purple_debug_info("gtkdebug", "Setting dimensions to %d, %d\n", + purple_debug_info("pidgindebug", "Setting dimensions to %d, %d\n", width, height); gtk_window_set_default_size(GTK_WINDOW(win), width, height); @@ -710,68 +706,43 @@ debug_enabled_cb(const char *name, PurplePrefType type, } static void -pidgin_glib_log_handler(const gchar *domain, GLogLevelFlags flags, - const gchar *msg, gpointer user_data) +pidgin_debug_g_log_handler(const gchar *domain, GLogLevelFlags flags, + const gchar *msg, gpointer user_data) { PurpleDebugLevel level; - char *new_msg = NULL; - char *new_domain = NULL; + GString *category = g_string_new("GLog-"); + + if(domain != NULL) { + g_string_append_printf(category, "%s-", domain); + } - if ((flags & G_LOG_LEVEL_ERROR) == G_LOG_LEVEL_ERROR) + if((flags & G_LOG_LEVEL_ERROR) != 0) { + g_string_append(category, "Error"); level = PURPLE_DEBUG_ERROR; - else if ((flags & G_LOG_LEVEL_CRITICAL) == G_LOG_LEVEL_CRITICAL) + } else if((flags & G_LOG_LEVEL_CRITICAL) != 0) { + g_string_append(category, "Fatal"); level = PURPLE_DEBUG_FATAL; - else if ((flags & G_LOG_LEVEL_WARNING) == G_LOG_LEVEL_WARNING) + } else if((flags & G_LOG_LEVEL_WARNING) != 0) { + g_string_append(category, "Warning"); level = PURPLE_DEBUG_WARNING; - else if ((flags & G_LOG_LEVEL_MESSAGE) == G_LOG_LEVEL_MESSAGE) + } else if((flags & G_LOG_LEVEL_MESSAGE) != 0) { + g_string_append(category, "Message"); level = PURPLE_DEBUG_INFO; - else if ((flags & G_LOG_LEVEL_INFO) == G_LOG_LEVEL_INFO) + } else if((flags & G_LOG_LEVEL_INFO) != 0) { + g_string_append(category, "Info"); level = PURPLE_DEBUG_INFO; - else if ((flags & G_LOG_LEVEL_DEBUG) == G_LOG_LEVEL_DEBUG) + } else if((flags & G_LOG_LEVEL_DEBUG) != 0) { + g_string_append(category, "Debug"); + level = PURPLE_DEBUG_MISC; + } else { + g_string_append(category, "Unknown"); level = PURPLE_DEBUG_MISC; - else - { - purple_debug_warning("gtkdebug", - "Unknown glib logging level in %d\n", flags); - - level = PURPLE_DEBUG_MISC; /* This will never happen. */ - } - - if (msg != NULL) - new_msg = purple_utf8_try_convert(msg); - - if (domain != NULL) - new_domain = purple_utf8_try_convert(domain); - - if (new_msg != NULL) - { -#ifdef ENABLE_GLIBTRACE - void *bt_buff[20]; - size_t bt_size; - - bt_size = backtrace(bt_buff, 20); - fprintf(stderr, "\nBacktrace for \"%s\" (%s):\n", new_msg, - new_domain != NULL ? new_domain : "g_log"); - backtrace_symbols_fd(bt_buff, bt_size, STDERR_FILENO); - fprintf(stderr, "\n"); -#endif - - purple_debug(level, (new_domain != NULL ? new_domain : "g_log"), - "%s\n", new_msg); - - g_free(new_msg); } - g_free(new_domain); + purple_debug(level, category->str, "%s\n", msg); + g_string_free(category, TRUE); } -#ifdef _WIN32 -static void -pidgin_glib_dummy_print_handler(const gchar *string) -{ -} -#endif - static void pidgin_debug_ui_init(PidginDebugUi *self) { @@ -803,32 +774,7 @@ pidgin_debug_ui_init(PidginDebugUi *self) purple_prefs_connect_callback(NULL, PIDGIN_PREFS_ROOT "/debug/enabled", debug_enabled_cb, self); -#define REGISTER_G_LOG_HANDLER(name) \ - g_log_set_handler((name), G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL \ - | G_LOG_FLAG_RECURSION, \ - pidgin_glib_log_handler, NULL) - - /* Register the glib/gtk log handlers. */ - REGISTER_G_LOG_HANDLER(NULL); - REGISTER_G_LOG_HANDLER("Gdk"); - REGISTER_G_LOG_HANDLER("GdkPixbuf"); - REGISTER_G_LOG_HANDLER("GLib"); - REGISTER_G_LOG_HANDLER("GLib-GObject"); - REGISTER_G_LOG_HANDLER("GModule"); - REGISTER_G_LOG_HANDLER("Gnt"); /* just in case we find a gnt plugin */ - REGISTER_G_LOG_HANDLER("GPlugin"); - REGISTER_G_LOG_HANDLER("GPluginGtk"); - REGISTER_G_LOG_HANDLER("GThread"); - REGISTER_G_LOG_HANDLER("Gtk"); - REGISTER_G_LOG_HANDLER("Json"); - REGISTER_G_LOG_HANDLER("libsoup"); - REGISTER_G_LOG_HANDLER("Talkatu"); - REGISTER_G_LOG_HANDLER("GStreamer"); - -#ifdef _WIN32 - if (!purple_debug_is_enabled()) - g_set_print_handler(pidgin_glib_dummy_print_handler); -#endif + g_log_set_default_handler(pidgin_debug_g_log_handler, NULL); } static void |