| 
     
      
      
      From: KUBO T. <ku...@ji...> - 2002-08-03 15:23:33
      
     
   | 
久保@茅ヶ崎市です。
Masao Mutoh <mu...@hi...> writes:
>> # うーむ、コミット権もらったのが良いかな?
>> # 毎回、むとうさんにコミットしてもらうのもなんだし。
>
> そうですねぇ。これは今のところご遠慮ください。
> Ruby-GNOMEの場合は、Ruby-GNOME2とは異なり、
> 私の方で内容を吟味の上、コミットする形の方が良いでしょう。
了解。
> 先のメールで書きましたが、これは、
>
>   * Art::Affine のサポート
>     新規: libart_gpl/....
>     修正: gnome/src/rbgnome-canvas-item.c
>     修正: gnome/src/rbgnome-canvas.c
>     修正: gnome/src/rbgnome.c
>     修正: gnome/src/rbgnome.h
  追加修正: gnome/src/lib/gnome.rb
> という形にしたいですね。久保さんの方でlibart_gplの別ライブラリ化
> ができますか?
それは大丈夫です。
明日は用事があるので、月曜の夜にでも出します。
>>  * test-gnome に Art::Affine のサンプルを追加
>>    新規: gnome/sample/test-gnome/canvas-affine.rb
>>    修正: gnome/sample/test-gnome/canvas.rb
>
> これも、libart_gplの方に持っていった方が良いでしょうね。
> 例の内容も、gnomeを使った場合やgtkを使った場合が考えられる
> と思います。
思いっきり、Gnome::Canvas に依存しているので、これはこのままで良いので
はないかと。
Art::Affine しかない状況では、Gnome::Canvas を使用しない例は考えられま
せん。libart_lgpl の関数をすべて実装したらな、Gdk を使った例が作れるか
もしれませんが、私には Gdk の知識はないもんで......。
>> ですが、ついでに
>>  * Gnome::CanvasPoints のバグの修正
>>    修正: gnome/src/rbgnome-canvas-util.c
>> 
>> もはいっています。
>
> おっと、こちらはお手数をおかけしますが、バグの修正内容を教えてください。
> これは、私の方でパッチの意図と実装内容を簡単に確認したいと言うことと、
> ChangeLogに書く材料にしたいということから必要です。
元々は、Gnome;:CanvasPoints#free が二回呼ばれると、一回目の呼び出しで
points_free の gcp が NULL になるので、
    if (gcp->ref_count == 1) {
で落ちるのを防止するのが目的でした。
ついでにいろんなところで、
    Data_Get_Struct(self, GnomeCanvasPoints, gcp);
    if (gcp == NULL) {
        rb_raise(rb_eRuntimeError, "object is already freed.");
    }
としているのを抽出して、
    get_gnome_canvas_points()
としてまとめました。
ただ、ひとつの考えとして、これらのことはすべて、
    Gnome;:CanvasPoints#free
があることに起因しているので、このメソッドは削除して GC にメモリ回収を
まかせるという手もあります。Cレベルで gnome_canvas_points_free() とい
う API があるのは、C では自前でメモリ管理をしないといけないからで、
ruby の場合 GC にまかせるという選択肢もあるのではないかと。
# もちろん、Data_Wrap_Struct の free に gnome_canvas_points_free を入
# れるという前提で。
これはどちらが良いでしょうか?
    Gnome;:CanvasPoints#free
がないほうが実装はかなり単純になりそうです。
では、再見
-- 
神奈川県茅ヶ崎市在住 久保 健洋
email: ku...@ji...
web:   http://www.jiubao.org
GnuPG fingerprint = 5F7B C8EF CA16 57D0 FDE1  9F47 C001 1F93 AC08 2262
 |