From: Masao M. <mu...@hi...> - 2006-01-17 14:09:56
|
むとうです。 On Tue, 17 Jan 2006 12:11:33 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です. > > Windows環境では,GTK+のメインループ中にRubyに処理を渡すため > にgtk_idle_add()でrb_thread_wait_for()していますが,idle用関 > 数を登録しているために,Gtk.events_pending?が常にtrueになっ > てしまいます. > > このため,以下のようにGtk.events_pending?を使った処理を追加 > して,「時間のかかる処理中に,他の処理を行いながらメインの処 > 理をする」ということができません. > > while Gtk.events_pending? > Gtk.main_iteration > end おぉ、ちょうどこれ、バグレポートであがってたやつですね。 http://sourceforge.net/tracker/index.php?func=detail&aid=1385468&group_id=53614&atid=470969 > > ということで,Gtk.events_pending?の間だけ,idle用関数を削除 > して,Gtk.events_pending?の結果にidle用関数が影響しないよう > にするというのはどうでしょうか? patchをざっとみてみたのですが、1点確認が。 __set/remove_internal_pool_func__ をRuby側に持たせる理由ってなんででしょうか? なんとなく、rbgtk.cのpoll周りの関数を全部rbgtkmain.cに移せばidle_id 含めてすっきりCだけで書けそうな気がするのですが・・・。 > # そろそろこの問題も解決されると嬉しいです... > # http://ruby-gnome2.sourceforge.jp/ja/sfmltoj.cgi?key=/mailarchive/message.php%3Fmsg_id%3D2606902 > うう、すみません。 今、Ruby-GNOME2に時間を割けていないのが実情です。 もし、どなたかが実装して頂けるなら歓迎します。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |