From: Masahiro S. ()
<sa...@to...> - 2006-05-17 14:02:28
|
酒井です。 ご無沙汰しています。 From: Masao Mutoh <mu...@hi...> Date: Wed, 17 May 2006 20:57:05 +0900 > むとうです。 > ところで、enの方で起こってる主にjoao関係の問題、 最近のRuby/GLib2のコードはあまり真面目に読んでいないですが、 多分以下のようなことが起きているのではないでしょうか。 b = Gtk::Button.new b.signal_connect('clicked'){ } # (中略) 「ボタンのgtk側オブジェクトはgtk側できちんと参照されているが、 # Ruby側のオブジェクトは(変数b以外からは)辿れない」という状態になる。(1) b = nil GC.start # ボタンのRuby側オブジェクトがGCされ、GRClosureHolderもGCされ、 # GRClosureのcountが0になる。 # その後ボタンがクリックされる。 # => "warning: GRClosure invoking callback: already destroyed" 現在のRuby-GNOME2は(1)のような状況が起らないようG_CHILD_ADD等で 頑張っているみたいですが、Ruby-GNOME2側でいくら頑張っても、 gtk側のコードでオブジェクトの参照関係が変化するような場合もあるので、 そのような状況を完全に排除するのは現実的ではないでしょう。 -- 酒井 政裕 / Masahiro Sakai |