古川です。

>> こういうことだとすれば、私の考えは現状のままでも拡張ライブラリにしても
>> いいかなあ、というぐらいです。
>> ただ trackball.rb, lw.rb はすでにできてるが、一方拡張ライブラリは
>> 作る手間がかかる ...
>
>ふむ‥。たしかにそうなんですが‥。とりあえず、これはそのままにしておきま
>しょう。

ひょっとして、もっと実用的(というか汎用度の高い)ライブラリを
お考えなのでしょうか。trackball.rb は汎用的にはしづらそうだけど、
lw.rb なんかは LightWave 3D の読み書き用のライブラリとして
独立してあってもよさそうですからね。

>う〜ん、そうですか?(^^; じゃ、
>
>glarea = Gtk::GLArea.new(list, share)
>
>に、しましょう(^^;;

わがままいってすみません。どうしても glarea を共有するイメージが
浮かんでしまって。

>initializeの functionと、rbgtk_fixary_2_intary()をこれに付けますね。

見てみました。いいのではないでしょうか。
ただ attrlist の最後に GDK_GL_NONE がない時のチェックはどうしますか ?
rbgtkglarea.c のもともとのコードではチェックしてあったので、
私は入れておいたのですが。

>rbgtk_fixary_2_intary()は、第二引き数に int *を要求させてみました。これ
>は free()をわざわざしたくなかったからなんですが、内部で mallocさせて、使
>いおわったら free()する方が綺麗?

私個人の感覚としては、malloc() と free() はなるべく同じ関数内で
対になってて欲しいなあ、という気がします(プログラム中のあっちこっちで
使うような大きなレベルのものは、当然対にはできませんが)。
それよりも、

list = rbgtk_fixary_2_intary(attrlist, ALLOCA_N(int, RARRAY(attrlist)->len));

とするなら、

list = ALLOCA_N(int, RARRAY(attrlist)->len);
rbgtk_fixary_2_intary(attrlist, list);

の方がいいかも。でもこれだと上で書いた GDK_GL_NONE のチェックとかを
rbgtk_fixary_2_intary() の外でやる必要がでてきます。

--------
古川大介