Пользовательские темы?

Как создать собственные потоки для запуска в приложении Gtk?

Учитывая этот упрощенный пример:

@w = Gtk::Window.new "testtest"
@l = Gtk::Label.new "test"
@w.add @l
@w.show_all
Gtk.main

Как я мог запустить такой поток?

Thread.start { loop { puts 'thread running'; @l.text = Time.now.to_s; sleep 1 }}

У меня есть этот подход, основанный на тайм-ауте, работающий с #timeout_add, но это не очень хорошо и не работает для того, чего я действительно пытаюсь достичь: ожидания сигнала dbus.

Я пробовал много вещей, каждая из которых либо зависала в потоке gtk, либо в моем собственном потоке. Я также пытался использовать http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_threads, но я не уверен, что это действительно та же проблема)


person Community    schedule 03.10.2009    source источник


Ответы (1)


Я знаю, что Redcar перешел с gtk, потому что я считаю, что он не мог заставить тесты работать правильно.

http://redcareditor.com/blog/2009/08/redcar-is-moving-to-jruby/

http://groups.google.com/group/redcar-editor/browse_thread/thread/1a4d4718cf10c170/fa5e481d6365cb41?lnk=gst&q=gtk+test#fa5e481d6365cb41

так что вы могли бы спросить Даниэля или в этом списке рассылки.

с точки зрения диагностики зависания, я полагаю, вы могли бы использовать strace или что-то еще, чтобы не видеть, где он зависает. Также может помочь работа с 1.9, поскольку вы можете установить определенные вызовы C как «неблокирующие» в двоичных расширениях. ГЛ. -р

person rogerdpack    schedule 01.08.2010