pidgin/pidgin

Initialize Finch debug handlers earlier

2021-10-19, Elliott Sales de Andrade
bd2767810a18
Parents 6dc7e403f8f2
Children 409319dde54e
Initialize Finch debug handlers earlier

Otherwise, some logging is printed during Purple initialization, which is not what we want for a console application.

Testing Done:
Ran finch, and saw no output before the terminal changed to alternate mode (or whatever it's called), and opened/closed the Debug Window.

Reviewed at https://reviews.imfreedom.org/r/1073/
--- a/finch/gntdebug.c Mon Oct 18 22:41:34 2021 -0500
+++ b/finch/gntdebug.c Tue Oct 19 00:30:58 2021 -0500
@@ -44,7 +44,6 @@
/* Other members, including private data. */
};
-static void finch_debug_ui_finalize(GObject *gobject);
static void finch_debug_ui_interface_init(PurpleDebugUiInterface *iface);
G_DEFINE_TYPE_WITH_CODE(FinchDebugUi, finch_debug_ui, G_TYPE_OBJECT,
@@ -400,19 +399,32 @@
static void
finch_debug_ui_class_init(FinchDebugUiClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
- object_class->finalize = finch_debug_ui_finalize;
}
static void
finch_debug_ui_init(FinchDebugUi *self)
{
+}
+
+FinchDebugUi *
+finch_debug_ui_new(void)
+{
+ return g_object_new(FINCH_TYPE_DEBUG_UI, NULL);
+}
+
+void
+finch_debug_init_handler(void)
+{
g_log_set_writer_func(finch_debug_g_log_handler, NULL, NULL);
+}
+void
+finch_debug_init(void)
+{
g_set_print_handler(print_stderr); /* Redirect the debug messages to stderr */
- if (!purple_debug_is_enabled())
+ if (!purple_debug_is_enabled()) {
handle_fprintf_stderr(FALSE);
+ }
purple_prefs_add_none(PREF_ROOT);
purple_prefs_add_string(PREF_ROOT "/filter", "");
@@ -420,19 +432,13 @@
purple_prefs_add_int(PREF_ROOT "/size/width", 60);
purple_prefs_add_int(PREF_ROOT "/size/height", 15);
- if (purple_debug_is_enabled())
+ if (purple_debug_is_enabled()) {
g_timeout_add(0, start_with_debugwin, NULL);
+ }
}
-static void
-finch_debug_ui_finalize(GObject *gobject)
+void
+finch_debug_uninit(void)
{
handle_fprintf_stderr(TRUE);
- G_OBJECT_CLASS(finch_debug_ui_parent_class)->finalize(gobject);
}
-
-FinchDebugUi *
-finch_debug_ui_new(void)
-{
- return g_object_new(FINCH_TYPE_DEBUG_UI, NULL);
-}
--- a/finch/gntdebug.h Mon Oct 18 22:41:34 2021 -0500
+++ b/finch/gntdebug.h Tue Oct 19 00:30:58 2021 -0500
@@ -53,6 +53,34 @@
FinchDebugUi *finch_debug_ui_new(void);
/**
+ * finch_debug_init_handler:
+ *
+ * Initialize handler for GLib logging system.
+ *
+ * This must be called early if you want to capture logs at startup, and avoid
+ * printing them out.
+ *
+ * Since: 3.0.0
+ */
+void finch_debug_init_handler(void);
+
+/**
+ * finch_debug_init:
+ *
+ * Perform necessary initializations.
+ *
+ * Since: 3.0.0
+ */
+void finch_debug_init(void);
+
+/**
+ * finch_debug_uninit:
+ *
+ * Perform necessary uninitialization.
+ */
+void finch_debug_uninit(void);
+
+/**
* finch_debug_window_show:
*
* Show the debug window.
--- a/finch/gntui.c Mon Oct 18 22:41:34 2021 -0500
+++ b/finch/gntui.c Tue Oct 19 00:30:58 2021 -0500
@@ -77,6 +77,8 @@
{
GError *error = NULL;
+ finch_debug_init();
+
#ifdef STANDALONE
#ifdef _WIN32 /* TODO: don't change it when using FHS under win32 */
gnt_set_config_dir(purple_user_dir());
@@ -172,6 +174,8 @@
gnt_quit();
+ finch_debug_uninit();
+
#ifdef _WIN32
gnt_set_config_dir(NULL);
#endif /* _WIN32 */
--- a/finch/libfinch.c Mon Oct 18 22:41:34 2021 -0500
+++ b/finch/libfinch.c Tue Oct 19 00:30:58 2021 -0500
@@ -159,6 +159,7 @@
*/
/* We don't want debug-messages to show up and corrupt the display */
+ finch_debug_init_handler();
purple_debug_set_enabled(debug_enabled);
purple_core_set_ui_ops(gnt_core_get_ui_ops());