Hello Ian,

sorry for the late post.  I'm not the expert of Ruby, Gtk+, nor
threads, but was interested in this topic.

From: Ian Main <imain / gtk.org>
Subject: [ruby-talk:01508] Ruby/GTK and the mainloop
Date: Fri, 18 Feb 2000 23:19:56 -0800

> Now, this doesn't cause too huge of problems, but I did notice the
> sluggish redraw gtk had when run from ruby (because it only gets control
> to redraw every 100ms).  It also makes the applications consume a small
> amount of CPU when idle.
> 
> If I were to embed ruby into entity, it would also cause IO handlers to be
> called with a 100ms delay.  I realize this could be made into a smaller
> amount (and indeed this is what I did with the Ruby/GTK to make it "feel"
> faster), but this causes more idle CPU usage.. not a big deal on my machine,
> but the actual amount will vary depending on the platform.

I thought 100ms was the best we could get.

the problem we had was that, as the source code shows,

#if 1
    gtk_idle_add((GtkFunction)idle, 0);
#else
    /* use timeout to avoid busy wait */
    gtk_timeout_add(100, (GtkFunction)idle, 0);
#endif

using gtk_timeout_add turns into busy wait and it consumes most of the
cpu time by itself.  That was why we, or I should say Masaki
Fukushima, fukusima / goto.info.waseda.ac.jp, changed it to idle_add in
ruby-list:16691.

the problem, ruby keeps scheduling at least 100ms once it gets, was
already known at the time.  He, Masaki Fukushima, also suggested using
only one select but both Ruby and Gtk+ has a chance to wait on I/O, so
he said it's difficult, if not impossible, to do it with current Ruby
and Gtk+.

> So the point of all this, is that I'm wondering if you would be interested
> in implementing a similar thing in Ruby ?  I would be willing to help in any
> way possible, including an attempt at supplying patches if this is what it
> will take.

I'd like to see if you already have a patch for this one.  I don't
think there is any problem to include your patch if it works.

ps. is that why text widget seems slower on Ruby/Gtk than native Gtk+?

regards,
--
           yashi