From: Masao M. <mu...@hi...> - 2006-11-04 10:00:03
|
須藤さん むとうです。 ブロックの実装部分について質問です。 たとえば、rbgtkprinjob.cで以下のような 実装をされていると思います。 static VALUE pj_send(VALUE self) { VALUE block = G_BLOCK_PROC(); G_CHILD_ADD(gPrintJob, block); gtk_print_job_send(_SELF(self), complete_func, (gpointer)block, remove_callback_reference); return self; } で、質問は、G_CHILD_ADDのところなのですが、 これって、今まではG_RELATIVE(self, block)とやっていたと 思うのですが、 「クラスオブジェクトに付けることでselfがGCされても GCされないようにする」 という意図でいいですか? 上記が正しいとして。 gPrintJobではなくmGtkなど、よりグローバルな変数を 使えば、gPrintJob自体を外出し(ファイルの頭で宣言)する必要が ないと思うのですが、ファイルごとにG_CHILD_ADDするものを 分けたのは何か意図がありますか? それでは。 |