diff options
author | Ben Gamari <ben@smart-cactus.org> | 2016-05-09 09:01:09 +0200 |
---|---|---|
committer | Patrick Griffis <tingping@tingping.se> | 2016-06-29 15:42:11 -0400 |
commit | 9e4c2ddc47592d26cd4184e8942806fbd7becf18 (patch) | |
tree | 2d7aa26f19072883f18bda2315c175a8ed351044 /src | |
parent | bcbe42dd7a4b7bca0e699c3e52f2c9bf7b37deba (diff) |
Apply timeout changes made in preferences dialog
Just involves a bit of refactoring.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/hexchat.c | 42 | ||||
-rw-r--r-- | src/common/hexchatc.h | 1 | ||||
-rw-r--r-- | 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 (); |