From: Masao M. <mu...@hi...> - 2005-02-25 18:55:59
|
むとうです。 devel-enの方にも入られている方はすでに ご存じかと思いますが、Ruby/GtkMozEmbedを 使うにあたって、現在、require 'gtk2'時に 強制的に呼び出しているg_thread_init/gdk_threads_init を、外出しにして欲しい、という要望をRuby/GtkMozEmbed のメンテナであるMirkoから受けました。 対応策として以下の2つがあります。 1. Gdk::Threads.initというメソッドを用意 -(e.g.)----------- require 'gtk2' Gdk::Threads.init Gtk.init ------------------- 2. $DISABLE_GTHREADという定数を用意し、これがtrue に設定されている場合はg_thread_init/gdk_threads_init を呼ばない。 g_thread_init/gdk_threads_initの呼び出しはGtk.init 内で呼ぶように変更。 -(e.g.)----------- require 'gtk2' $DISABLE_GTHREAD = true Gtk.init ------------------- いずれにせよ、RubyのThreadを使うアプリは g_thread_init/gdk_threads_initを呼ばないと 表示がアップデートされない、等の問題が出ます。 #gtk/sample/misc/threads.rbでご確認ください。 案1ですと、既存のアプリにも手に入れていただく 必要があり、かつ、RubyのThreadを使う場合はGdk::Threads.init 呼んでね、というのはちょっとカッコわるい気がします。 案2ですと、今後、GThreadを扱うライブラリを使う場合は $DISABLE_GTHREAD = trueにすればよく、たいていの場合は それぞれの拡張ライブラリの.rbファイルで対応できます。 なので、Ruby-GNOME2ライブラリ使用者は今までと何ら変更 が無いようにすることができると思います。 そんなわけで、案2を採用しようと思うのですが、 何かご意見等ありますでしょうか? あと、それとは別に、Gdk::Threads.enter, leaveがイマイチ うまく使えないのですが、何でだかご存じの方いらっしゃい ませんか? あるいは上手に使えてるサンプルとか。 やっぱり、pthreadとRubyのスレッドの相性問題でうまく 使えないのでしょうか。 ではでは。 -- .:% Masao Mutoh<mu...@hi...> |