From: Masao M. <mu...@hi...> - 2006-07-06 16:19:53
|
むとうです。 最新のRuby-GNOME2ですと、他のスレッドでGtk::Dialog#runやGtk.mainを呼び出すと 以下のようなwarningが出ます。 一応はresponseは-5や-6が返るようです。 test.rb: line 2 GLib-WARNING **:g_main_context_prepare(): main loop already active in another thread 現状では、複数のスレッドで上記メソッドを動作させることは推奨できません。 というより上記メソッドはメインスレッドで動作させるのが一番安全です。 この辺、もしかしたらよりよい正解、というのがあるのかもしれませんが、 私自身の時間不足とスキル不足から突き詰めて考えられていません。 もしよろしければどなたかうまく動かすことにチャレンジしてみませんか? それでは。 On Thu, 06 Jul 2006 17:02:13 +0900 Kazuhiro NISHIYAMA <zn...@mb...> wrote: > 西山和広です。 > > Debian sargeの > % pkg-config --modversion gtk+-2.0 > 2.6.4 > % dpkg -l libgtk2-ruby|grep '^ii' > ii libgtk2-ruby 0.12.0-2 GTK+ bindings for the Ruby language > % > という環境で、以下のようにThreadの中でGtk::Dialog#runを実行すると > responseが-6(RESPONSE_CANCEL)や-5(RESPONSE_OK)ではなく、 > -1(RESPONSE_NONE)になることが多いのですが、 > これはそういうもの(Dialog#runしたままシグナルハンドラから > 抜けてはいけない)なのでしょうか? > > 別の処理をしたり外部コマンドを実行したりする都合でスレッドを > 作っていて、その中でMessageDialogを使ったら-1になることが > 多くて、悩んでいたらスレッドの中というのが原因でした。 > > > #!/usr/bin/ruby -Ku > require 'gtk2' > Gtk.init > window = Gtk::Window.new > window.signal_connect('destroy') { Gtk.main_quit } > button = Gtk::Button.new('_Test') > button.signal_connect('clicked') do > Thread.start do > dialog = Gtk::MessageDialog.new(nil, > Gtk::Dialog::DESTROY_WITH_PARENT, > Gtk::MessageDialog::QUESTION, > Gtk::MessageDialog::BUTTONS_OK_CANCEL, > "test message") > dialog.run do |response| > p response > end > dialog.destroy > end > end > window.add(button) > window.show_all > Gtk.main > > > > -- > |ZnZ(ゼット エヌ ゼット) > |西山和広(Kazuhiro NISHIYAMA) > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- -- .:% Masao Mutoh<mu...@hi...> |