From: Masao M. <mu...@hi...> - 2006-05-28 13:52:20
|
さかいさん むとうです。 On Sun, 28 May 2006 00:12:06 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > 酒井です。 > > From: Masao Mutoh <mu...@hi...> > Date: Sat, 27 May 2006 23:32:37 +0900 > > > むとうです。 > > > > サブクラスにも有効になるようRuby/GLib2側を変更してあります。 > > > > なるほど。 > > ちなみにこれに関して、どのファイルのどの辺りを見れば良いか教えて > > いただけませんか?ちょっとわからなくて・・・。 > > rbbogj_typeinstance.cのrbgobj_instance_call_cinfo_mark()で > 各cinfoのmarkを呼んでいます。 > この辺りはもっと整理したいと思っています。 > > > それから、rbgtkcontainer.cの中のcont_mark, cont_mark_callbackに > > それぞれデバッグ文を入れて、以下を実行したところ、デバック文が表示されなか > > ったのですがそういうもの(このタイミングではcont_markは呼ばれない)なのでしょうか。 > > すみません。バグってました。 > 先ほど修正しましたので、今度こそ大丈夫だと思います。 > > > Gtk::Window.newを呼んだときは、rbgtkcontainer.cのcont_mark > > が動く、という理解でいいですか?ってここを誤解してるのかな。 > > GC.startが呼ばれたタイミング? > > GC.startが呼ばれたタイミングです。 > > > require 'gtk2' > > > > Gtk.init > > def test > > Gtk::Window.new > > end > > loop { > > test > > GC.start > > } > > Windowに何かWidgetを追加しておけば、cont_mark_callbackが呼ばれるのも > 観察出来るはずです。 遅くなりました。 CVS版の最新版で試したところ、無事に観察できました。 ところで、以下のスクリプトを試したところ、Gtk::Windowが増える一方です。 イメージ的にはafterが常に1になるような気がします。 これだとメモリリークしているような気がするのですがこういうものなんでしょうか。 require 'gtk2' Gtk.init def test Gtk::Window.new.add(Gtk::Button.new("CLICK")) end loop { test p [:before, ObjectSpace.each_object(Gtk::Window) {}] GC.start p [:after, ObjectSpace.each_object(Gtk::Window) {}] } -- .:% Masao Mutoh<mu...@hi...> |