[#3741] Re: Why it's quiet -- standard distribution issues — Aleksi Niemel<aleksi.niemela@...>
I think it's the feature of the mailing list archive to create a threads of
[#3756] RE: XMP on comments — Aleksi Niemel<aleksi.niemela@...>
> require "xmp"
[#3766] modulo and remainder — Dave Thomas <Dave@...>
[#3776] Kernel.rand — Aleksi Niemel<aleksi.niemela@...>
How about defining:
[#3781] Widening out discussions — Dave Thomas <Dave@...>
[#3795] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> As matz said in [ruby-talk:3785] and Dave said in [ruby-talk:1229],
Hi, Aleksi,
[#3823] Re: Array.pick — Aleksi Niemel<aleksi.niemela@...>
> > Just a general comment--a brief statement of purpose and using
[#3827] JRuby? — Aleksi Niemel<aleksi.niemela@...>
Is there or will there be Ruby equivalent of JPython?
[#3882] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> |look too strange, confusing, or cryptic. Maybe just @, $, %, &.
Hi,
[#3918] A question about variable names... — Dave Thomas <Dave@...>
[#3935] If your company uses Pallets, Skids, Boxes, Lumber, etc. — pallets2@...
[#3956] Tk PhotoImage options — andy@... (Andrew Hunt)
Hi all,
[#3971] Thread and File do not work together — "Michael Neumann" <neumann@...>
following example do not work correctly with my ruby
[#3986] Re: Principle of least effort -- another Ruby virtue. — Andrew Hunt <andy@...>
> Principle of Least Effort.
Hi,
[#4005] Re: Pluggable functions and blocks — Aleksi Niemel<aleksi.niemela@...>
Aleksi makes a question:
[#4008] Ruby installation instructions for Windows — Aleksi Niemel<aleksi.niemela@...>
I had to write these instructions for my friends. I thought it might be nice
[#4043] What are you using Ruby for? — Dave Thomas <Dave@...>
On 15 Jul 2000 22:08:50 -0500,
Hi,
[#4057] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
Johann:
[#4082] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
[#4091] 'each' and 'in' — hal9000@...
I just recently realized why the default
[#4107] Re: 'each' and 'in' -- special char problem? — schneik@...
[#4114] Method signature - a question for the group — Dave Thomas <Dave@...>
[#4139] Facilitating Ruby self-propagation with the rig-it autopolymorph application. — Conrad Schneiker <schneik@...>
Hi,
[#4158] Getting Tk to work on Windows — "Michael Neumann" <neumann@...>
Hi....
[#4178] Partly converted English Ruby/Tk widget demo working. — Conrad Schneiker <schneik@...>
Hi,
[#4234] @ variables not updated within method? — Hugh Sasse Staff Elec Eng <hgs@...>
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On 27 Jul 2000, Dave Thomas wrote:
[#4267] Ruby.next, Perl6, Python 3000, Tcl++, etc. -- Any opportunities for common implementation code? — "Conrad Schneiker" <schneiker@...>
Hi,
"Conrad Schneiker" wrote:
[ruby-talk:04020] Re: Slow GTK+ and Tk bindings
From: DaVinci <bombadil@wanadoo.es>
Subject: [ruby-talk:04013] Slow GTK+ and Tk bindings
Date: Fri, 14 Jul 2000 15:41:16 +0200
> I have probed samples of Gtk+ and Tk for Ruby.
>
> Why are they so slow?.
any example?
using ruby 1.5.x and g_main_set_poll_func() patch by Masaki Fukushima
should fix 100ms prob. pointed while ago on this list.
regards,
--
yashi
--- rbgtk.c.orig Sun May 21 22:48:58 2000
+++ rbgtk.c Mon May 22 01:28:50 2000
@@ -2309,6 +2309,75 @@
/*
* Gtk module
*/
+#include <version.h>
+#if RUBY_VERSION_CODE >= 154
+# define USE_POLL_FUNC 1
+#else
+# undef USE_POLL_FUNC /* rb_thread_select() may cause busy wait */
+#endif
+
+#ifdef NATIVE_WIN32
+# undef USE_POLL_FUNC /* I don't know whether this works for win32. */
+#endif
+
+#ifdef USE_POLL_FUNC
+
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif
+
+static gint
+rbgtk_poll (GPollFD *fds,
+ guint nfds,
+ gint 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;
+ }
+ }
+
+ return ready;
+}
+
+#else /* !USE_POLL_FUNC */
+
static gint
idle()
{
@@ -2323,6 +2392,8 @@
return Qtrue;
}
+#endif /* !USE_POLL_FUNC */
+
/*
* Init
*/
@@ -2510,11 +2581,15 @@
gItemFactory = rb_define_class_under(mGtk, "ItemFactory", rb_cData);
Init_gtk_calendar();
-#if 1
- gtk_idle_add((GtkFunction)idle, 0);
+#ifdef USE_POLL_FUNC
+ g_main_set_poll_func(rbgtk_poll);
#else
+# if 1
+ gtk_idle_add((GtkFunction)idle, 0);
+# else
/* use timeout to avoid busy wait */
gtk_timeout_add(100, (GtkFunction)idle, 0);
+# endif
#endif
rb_global_variable(&warn_handler);