From: Masao M. <mu...@hi...> - 2007-11-17 18:21:18
|
むとうです。 Win32で試してみましたがとりあえず動いているようです。 #ちょっとだけパッチ当てましたけど。 On Mon, 12 Nov 2007 23:51:42 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です。 > > ふと思いついたんですが、rbglib_poll()をこうするというのはど > うでしょうか? > これだとWindowsでもidleを使わずにすむかもしれません。 > > 手元のDebianではgtk-demoとかRabbitが以前と同じように動きまし > た。 > > > Index: src/rbglib_mainloop.c > =================================================================== > --- src/rbglib_mainloop.c (リビジョン 2692) > +++ src/rbglib_mainloop.c (作業コピー) > @@ -46,48 +46,16 @@ rbglib_poll (GPollFD *fds, > guint nfds, > gint timeout) > { > + gint half_timeout; > struct timeval tv; > - fd_set rset, wset, xset; > - GPollFD *f; > - int ready; > - int maxfd = 0; > - > - FD_ZERO (&rset); > - FD_ZERO (&wset); > - FD_ZERO (&xset); > - > - for (f = fds; f < &fds[nfds]; ++f) { > - if (f->fd >= 0) { > - if (f->events & G_IO_IN) > - FD_SET (f->fd, &rset); > - if (f->events & G_IO_OUT) > - FD_SET (f->fd, &wset); > - if (f->events & G_IO_PRI) > - FD_SET (f->fd, &xset); > - if (f->fd > maxfd && (f->events & (G_IO_IN|G_IO_OUT|G_IO_PRI))) > - maxfd = f->fd; > - } > - } > - tv.tv_sec = timeout / 1000; > - tv.tv_usec = (timeout % 1000) * 1000; > > - ready = rb_thread_select (maxfd + 1, &rset, &wset, &xset, > - timeout == -1 ? NULL : &tv); > - if (ready > 0) { > - for (f = fds; f < &fds[nfds]; ++f) { > - f->revents = 0; > - if (f->fd >= 0) { > - if (FD_ISSET (f->fd, &rset)) > - f->revents |= G_IO_IN; > - if (FD_ISSET (f->fd, &wset)) > - f->revents |= G_IO_OUT; > - if (FD_ISSET (f->fd, &xset)) > - f->revents |= G_IO_PRI; > - } > - } > - } > + half_timeout = timeout / 2; > + > + tv.tv_sec = half_timeout / 1000; > + tv.tv_usec = (half_timeout % 1000) * 1000; > > - return ready; > + rb_thread_select(0, NULL, NULL, NULL, &tv); > + return default_poll_func(fds, nfds, half_timeout); > } > > static void > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- .:% Masao Mutoh<mu...@hi...> |