From 809e549408bfdf7cab4b98a73f6e78dd3ad81d86 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Wed, 1 May 2013 15:10:26 +0200 Subject: [PATCH] ncurses_wrap.c: use new rb_thread_fd_select avoiding deprecated functions --- ncurses_wrap.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/ncurses_wrap.c b/ncurses_wrap.c index 7793fcb..ba1e921 100755 --- a/ncurses_wrap.c +++ b/ncurses_wrap.c @@ -836,20 +836,28 @@ static int rbncurshelper_nonblocking_wgetch(WINDOW *c_win) { c_win->_delay = 0; #endif while (doupdate() /* detects resize */, (result = wgetch(c_win)) == ERR) { - gettimeofday(&tv, &tz); - nowtime = tv.tv_sec + tv.tv_usec * 1e-6; - delay = finishtime - nowtime; - if (delay <= 0) break; - - /* Check for terminal size change every resize_delay seconds */ - if (resize_delay > delay) resize_delay = delay; - tv.tv_sec = (time_t)resize_delay; - tv.tv_usec = (unsigned)( (resize_delay - tv.tv_sec) * 1e6 ); - - /* sleep on infd until input is available or tv reaches timeout */ - FD_ZERO(&in_fds); - FD_SET(infd, &in_fds); - rb_thread_select(infd + 1, &in_fds, NULL, NULL, &tv); + rb_fdset_t fdsets[3]; + rb_fdset_t *rfds = NULL; + gettimeofday(&tv, &tz); + nowtime = tv.tv_sec + tv.tv_usec * 1e-6; + delay = finishtime - nowtime; + if (delay <= 0) break; + + /* Check for terminal size change every resize_delay seconds */ + if (resize_delay > delay) resize_delay = delay; + tv.tv_sec = (time_t)resize_delay; + tv.tv_usec = (unsigned)( (resize_delay - tv.tv_sec) * 1e6 ); + + /* sleep on infd until input is available or tv reaches timeout */ + FD_ZERO(&in_fds); + FD_SET(infd, &in_fds); + //rb_thread_fd_select(infd + 1, &in_fds, NULL, NULL, &tv); + + rfds = &fdsets[0]; + rb_fd_init(rfds); + rb_fd_copy(rfds, &in_fds, infd +1); + + rb_thread_fd_select(infd + 1, rfds, NULL, NULL, &tv); } #ifdef NCURSES_VERSION c_win->_delay = windelay;