From 92a50000c2421604f73ccad4e534948a4dc552e1 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 10 Apr 2016 14:55:06 +0200 Subject: Re-introduce gtk_use boolean This param is still actual, in case the environemnt does not support gtk initialization. Fix a GTK assert on the way (GTKStatusIcon is not a Widget, but a plain GObject). --- src/profanity.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'src/profanity.c') diff --git a/src/profanity.c b/src/profanity.c index d6c39f06..42f5936b 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -39,6 +39,7 @@ #ifdef PROF_HAVE_GTK #include +#include "tray.h" #endif #include #include @@ -75,9 +76,6 @@ #include "window_list.h" #include "event/client_events.h" #include "config/tlscerts.h" -#ifdef PROF_HAVE_GTK -#include "tray.h" -#endif static void _check_autoaway(void); static void _init(char *log_level); @@ -98,15 +96,21 @@ char *saved_status; static gboolean cont = TRUE; static gboolean force_quit = FALSE; +static gboolean gtk_ready = FALSE; void prof_run(char *log_level, char *account_name) { - _init(log_level); - plugins_on_start(); #ifdef PROF_HAVE_GTK - gtk_main_iteration_do(false); + gtk_ready = gtk_init_check(0, NULL); + log_debug("Env is GTK-ready: %s", gtk_ready ? "true" : "false"); + if (gtk_ready) { + gtk_init(0, NULL); + gtk_main_iteration_do(false); + } #endif + _init(log_level); + plugins_on_start(); _connect_default(account_name); ui_update(); @@ -140,7 +144,9 @@ prof_run(char *log_level, char *account_name) iq_autoping_check(); ui_update(); #ifdef PROF_HAVE_GTK - gtk_main_iteration_do(false); + if (gtk_ready) { + gtk_main_iteration_do(false); + } #endif } } @@ -365,7 +371,10 @@ _init(char *log_level) atexit(_shutdown); plugins_init(); #ifdef PROF_HAVE_GTK - create_tray(); + if (gtk_ready) { + log_debug("Building GTK icon"); + create_tray(); + } #endif inp_nonblocking(TRUE); } @@ -386,7 +395,9 @@ _shutdown(void) cl_ev_disconnect(); } #ifdef PROF_HAVE_GTK - destroy_tray(); + if (gtk_ready) { + destroy_tray(); + } #endif jabber_shutdown(); plugins_on_shutdown(); -- cgit 1.4.1-2-gfad0