From 9e4c2ddc47592d26cd4184e8942806fbd7becf18 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Mon, 9 May 2016 09:01:09 +0200 Subject: [PATCH] Apply timeout changes made in preferences dialog Just involves a bit of refactoring. --- src/common/hexchat.c | 42 ++++++++++++++++++++++++++++++++---------- src/common/hexchatc.h | 1 + src/fe-gtk/setup.c | 1 + 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/common/hexchat.c b/src/common/hexchat.c index f2c79024..3104ec53 100644 --- a/src/common/hexchat.c +++ b/src/common/hexchat.c @@ -369,6 +369,37 @@ hexchat_lag_check_update (void) /* this gets called every 0.5 seconds */ return 1; } +/* call whenever timeout intervals change */ +void +hexchat_reinit_timers (void) +{ + static int lag_check_update_tag = 0; + static int lag_check_tag = 0; + static int away_tag = 0; + + if (prefs.hex_notify_timeout) + { + notify_tag = fe_timeout_add_seconds (prefs.hex_notify_timeout, + notify_checklist, NULL); + } else + { + fe_timeout_remove (notify_tag); + } + + fe_timeout_remove (away_tag); + away_tag = fe_timeout_add_seconds (prefs.hex_away_timeout, away_check, NULL); + + if (prefs.hex_gui_lagometer) + { + lag_check_update_tag = fe_timeout_add (500, hexchat_lag_check_update, NULL); + lag_check_tag = fe_timeout_add_seconds (30, hexchat_lag_check, NULL); + } else + { + fe_timeout_remove (lag_check_update_tag); + fe_timeout_remove (lag_check_tag); + } +} + /* executed when the first irc window opens */ static void @@ -394,16 +425,7 @@ irc_init (session *sess) plugin_add (sess, NULL, NULL, dbus_plugin_init, NULL, NULL, FALSE); #endif - if (prefs.hex_notify_timeout) - notify_tag = fe_timeout_add_seconds (prefs.hex_notify_timeout, - notify_checklist, NULL); - - fe_timeout_add_seconds (prefs.hex_away_timeout, away_check, NULL); - if (prefs.hex_gui_lagometer) - { - fe_timeout_add (500, hexchat_lag_check_update, NULL); - fe_timeout_add_seconds (30, hexchat_lag_check, NULL); - } + hexchat_reinit_timers (); if (arg_url != NULL) { diff --git a/src/common/hexchatc.h b/src/common/hexchatc.h index 9d603870..ae1c540c 100644 --- a/src/common/hexchatc.h +++ b/src/common/hexchatc.h @@ -50,6 +50,7 @@ extern GList *sess_list_by_lastact[]; session * find_channel (server *serv, char *chan); session * find_dialog (server *serv, char *nick); session * new_ircwindow (server *serv, char *name, int type, int focus); +void hexchat_reinit_timers (void); void lastact_update (session * sess); session * lastact_getfirst (int (*filter) (session *sess)); int is_session (session * sess); diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index a934b9d7..eaac870e 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -2132,6 +2132,7 @@ setup_apply_real (int new_pix, int do_ulist, int do_layout, int do_identd) mg_apply_setup (); tray_apply_setup (); + hexchat_reinit_timers (); if (do_layout) menu_change_layout ();