Your message dated Fri, 23 Oct 2009 22:53:05 +0100
with message-id <[email protected]>
and subject line Re: Bug#502262: libgtk2-ruby1.8: Gtk UI rendering hangs when
another thread is working
has caused the Debian Bug report #502262,
regarding libgtk2-ruby1.8: Gtk UI rendering hangs when another thread is working
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
502262: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502262
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: libgtk2-ruby1.8
Version: 0.17.0~rc1-6
Severity: normal
I have a GTK program with a UI that is repeatedly updated from another thread
using the technique
described here:
http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_threads
If the updating thread doesn't sleep for *more* than 0.001s every iteration,
the UI never gets
updated.
I tried adding Thread.pass to the working thread, but it didn't help.
I expect the UI to be rendered even when another thread is working.
Expected behavior of the sample code below is to display a window with a button
saying "Flash
Gordon". Current behavior is to display an empty gray window.
I'm on ruby1.8 1.8.7.72-1.
Regards //Johan
=== Begin sample code
#!/usr/bin/ruby
=begin
This program has a GTK UI that is updated by a separate thread. The
program doesn't work (the UI isn't even rendered) unless the updating
thread sleeps for *over* 1ms sometimes.
Search for FIXME to see what helps and what doesn't.
The failing trials were run on Debian i686 with Ruby 1.8.7.72-1 and
libgtk2-ruby1.8 0.17.0~rc1-6.
[email protected]
=end
require 'gtk2'
require 'monitor'
# From http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_threads
module Gtk
GTK_PENDING_BLOCKS = []
GTK_PENDING_BLOCKS_LOCK = Monitor.new
def Gtk.queue &block
if Thread.current == Thread.main
block.call
else
GTK_PENDING_BLOCKS_LOCK.synchronize do
GTK_PENDING_BLOCKS << block
end
end
end
def Gtk.main_with_queue(timeout_ms = 100)
Gtk.timeout_add timeout_ms do
GTK_PENDING_BLOCKS_LOCK.synchronize do
for block in GTK_PENDING_BLOCKS
block.call
end
GTK_PENDING_BLOCKS.clear
end
true
end
Gtk.main
end
end
# Create UI
button = Gtk::Button.new("Hello World")
window = Gtk::Window.new
window.signal_connect("destroy") {
Gtk.main_quit
}
# Lay out UI
window.border_width = 10
window.add(button)
window.show_all
Thread.new {
while true
Gtk.queue do
button.label = "Flash Gordon"
end
# FIXME: Sleeping 0.001s does not help:
# sleep 0.001
# FIXME: Sleeping 0.0011s *does* help:
# sleep 0.0011
# FIXME: Thread.pass does not help:
# Thread.pass
end
}
Gtk.main_with_queue
=== End sample code
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (990, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.26-1-686 (SMP w/2 CPU cores)
Locale: LANG=sv_SE.UTF-8, LC_CTYPE=sv_SE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages libgtk2-ruby1.8 depends on:
ii libatk1-ruby1.8 0.17.0~rc1-6 ATK bindings for the Ruby language
ii libatk1.0-0 1.22.0-1 The ATK accessibility toolkit
ii libc6 2.7-14 GNU C Library: Shared libraries
ii libcairo2 1.6.4-6 The Cairo 2D vector graphics libra
ii libgdk-pixbuf2-ruby1.8 0.17.0~rc1-6 Gdk-Pixbuf 2 bindings for the Ruby
ii libglib2.0-0 2.16.6-1 The GLib library of C routines
ii libgtk2.0-0 2.12.11-3 The GTK+ graphical user interface
ii libpango1-ruby1.8 0.17.0~rc1-6 Pango bindings for the Ruby langua
ii libpango1.0-0 1.20.5-2 Layout and rendering of internatio
ii libruby1.8 1.8.7.72-1 Libraries necessary to run Ruby 1.
libgtk2-ruby1.8 recommends no packages.
libgtk2-ruby1.8 suggests no packages.
-- no debconf information
--- End Message ---
--- Begin Message ---
Version: 0.19.3-1
Fixed by upstream.
Thanks
--
Arnaud Cornet
--- End Message ---
_______________________________________________
Pkg-ruby-extras-maintainers mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-ruby-extras-maintainers