diff options
author | James Booth <boothj5@gmail.com> | 2015-01-31 01:11:41 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-01-31 01:11:41 +0000 |
commit | b3448eb265c7b656c07d3a72ea498dc6b5c5b888 (patch) | |
tree | 7fd621e707a24956cc53d6309962be2a406f5de2 /src/ui | |
parent | e161337b7f41be415f9e66ae8596268593f5c319 (diff) | |
download | profani-tty-b3448eb265c7b656c07d3a72ea498dc6b5c5b888.tar.gz |
Moved input blocking code to inputwin.c
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/core.c | 31 | ||||
-rw-r--r-- | src/ui/inputwin.c | 35 | ||||
-rw-r--r-- | src/ui/inputwin.h | 1 |
3 files changed, 34 insertions, 33 deletions
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); |