Blob Blame History Raw
From 809e549408bfdf7cab4b98a73f6e78dd3ad81d86 Mon Sep 17 00:00:00 2001
From: Gaute Hope <eg@gaute.vetsj.com>
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;