From b3448eb265c7b656c07d3a72ea498dc6b5c5b888 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 31 Jan 2015 01:11:41 +0000 Subject: Moved input blocking code to inputwin.c --- src/profanity.c | 2 -- src/ui/core.c | 31 +++---------------------------- src/ui/inputwin.c | 35 ++++++++++++++++++++++++++++++----- src/ui/inputwin.h | 1 + 4 files changed, 34 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/profanity.c b/src/profanity.c index cb3ce4eb..f3c53003 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -99,7 +99,6 @@ prof_run(const int disable_tls, char *log_level, char *account_name) void prof_handle_idle(void) { - cons_debug("IDLE"); jabber_conn_status_t status = jabber_get_connection_status(); if (status == JABBER_CONNECTED) { GSList *recipients = ui_get_chat_recipients(); @@ -121,7 +120,6 @@ prof_handle_idle(void) void prof_handle_activity(void) { - cons_debug("ACTIVITY"); win_type_t win_type = ui_current_win_type(); jabber_conn_status_t status = jabber_get_connection_status(); diff --git a/src/ui/core.c b/src/ui/core.c index e7477e57..ed21b233 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -215,33 +215,7 @@ ui_input_clear(void) void ui_input_nonblocking(gboolean reset) { - static gint timeout = 0; - static gint no_input_count = 0; - - if (! prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) { - inp_non_block(prefs_get_inpblock()); - return; - } - - if (reset) { - timeout = 0; - no_input_count = 0; - } - - if (timeout < prefs_get_inpblock()) { - no_input_count++; - - if (no_input_count % 10 == 0) { - timeout += no_input_count; - - if (timeout > prefs_get_inpblock()) { - timeout = prefs_get_inpblock(); - } - } - } - - log_info("TIMEOUT: %d", timeout); - inp_non_block(timeout); + inp_nonblocking(reset); } void @@ -2250,7 +2224,8 @@ ui_ask_password(void) status_bar_update_virtual(); inp_block(); inp_get_password(passwd); - inp_non_block(prefs_get_inpblock()); +// inp_non_block(prefs_get_inpblock()); + inp_nonblocking(TRUE); return passwd; } diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 929f85fb..fe75bc61 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -66,7 +66,9 @@ static WINDOW *inp_win; static struct timeval p_rl_timeout; -static int timeout_millis = 0; +static gint inp_timeout = 0; +static gint no_input_count = 0; + static fd_set fds; static int r; static gboolean cmd_result = TRUE; @@ -95,7 +97,7 @@ create_input_window(void) ESCDELAY = 25; #endif p_rl_timeout.tv_sec = 0; - p_rl_timeout.tv_usec = timeout_millis * 1000; + p_rl_timeout.tv_usec = inp_timeout * 1000; rl_callback_handler_install(NULL, cb_linehandler); inp_win = newpad(1, INP_WIN_MAX); @@ -144,9 +146,29 @@ offset_to_col(char *str, int offset) } void -inp_non_block(gint block_timeout) +inp_nonblocking(gboolean reset) { - timeout_millis = block_timeout; + if (! prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) { + inp_timeout = prefs_get_inpblock(); + return; + } + + if (reset) { + inp_timeout = 0; + no_input_count = 0; + } + + if (inp_timeout < prefs_get_inpblock()) { + no_input_count++; + + if (no_input_count % 10 == 0) { + inp_timeout += no_input_count; + + if (inp_timeout > prefs_get_inpblock()) { + inp_timeout = prefs_get_inpblock(); + } + } + } } void @@ -181,13 +203,16 @@ inp_readline(void) if (rl_line_buffer && rl_line_buffer[0] != '/') { prof_handle_activity(); } + ui_reset_idle_time(); + inp_nonblocking(TRUE); inp_write(rl_line_buffer, rl_point); } else { + inp_nonblocking(FALSE); prof_handle_idle(); } p_rl_timeout.tv_sec = 0; - p_rl_timeout.tv_usec = timeout_millis * 1000; + p_rl_timeout.tv_usec = inp_timeout * 1000; return cmd_result; } diff --git a/src/ui/inputwin.h b/src/ui/inputwin.h index 7193e049..081fc56b 100644 --- a/src/ui/inputwin.h +++ b/src/ui/inputwin.h @@ -41,6 +41,7 @@ void create_input_window(void); gboolean inp_readline(void); +void inp_nonblocking(gboolean reset); void inp_close(void); char* inp_read(int *key_type, wint_t *ch); void inp_win_clear(void); -- cgit 1.4.1-2-gfad0