pidgin/pidgindebug.c

changeset 40576
9616360d5943
parent 40552
eb0f386cea6b
child 40765
a5381c20e802
--- a/pidgin/pidgindebug.c	Sun Nov 01 03:33:09 2020 -0600
+++ b/pidgin/pidgindebug.c	Sun Nov 01 04:47:52 2020 -0600
@@ -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 @@
 	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 @@
 }
 
 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 ((flags & G_LOG_LEVEL_ERROR) == G_LOG_LEVEL_ERROR)
-		level = PURPLE_DEBUG_ERROR;
-	else if ((flags & G_LOG_LEVEL_CRITICAL) == G_LOG_LEVEL_CRITICAL)
-		level = PURPLE_DEBUG_FATAL;
-	else if ((flags & G_LOG_LEVEL_WARNING) == G_LOG_LEVEL_WARNING)
-		level = PURPLE_DEBUG_WARNING;
-	else if ((flags & G_LOG_LEVEL_MESSAGE) == G_LOG_LEVEL_MESSAGE)
-		level = PURPLE_DEBUG_INFO;
-	else if ((flags & G_LOG_LEVEL_INFO) == G_LOG_LEVEL_INFO)
-		level = PURPLE_DEBUG_INFO;
-	else if ((flags & G_LOG_LEVEL_DEBUG) == G_LOG_LEVEL_DEBUG)
-		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(domain != NULL) {
+		g_string_append_printf(category, "%s-", domain);
 	}
 
-	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);
+	if((flags & G_LOG_LEVEL_ERROR) != 0) {
+		g_string_append(category, "Error");
+		level = PURPLE_DEBUG_ERROR;
+	} else if((flags & G_LOG_LEVEL_CRITICAL) != 0) {
+		g_string_append(category, "Fatal");
+		level = PURPLE_DEBUG_FATAL;
+	} else if((flags & G_LOG_LEVEL_WARNING) != 0) {
+		g_string_append(category, "Warning");
+		level = PURPLE_DEBUG_WARNING;
+	} else if((flags & G_LOG_LEVEL_MESSAGE) != 0) {
+		g_string_append(category, "Message");
+		level = PURPLE_DEBUG_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) != 0) {
+		g_string_append(category, "Debug");
+		level = PURPLE_DEBUG_MISC;
+	} else {
+		g_string_append(category, "Unknown");
+		level = PURPLE_DEBUG_MISC;
 	}
 
-	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 @@
 	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

mercurial