Very interesting bug.... not sure whether this is Shoes, Cairo, or a Ruby bug...

Actually, it's not a Ruby bug, the console client works with this (Reyx)

On Sun, May 3, 2009 at 11:09 AM, Hugh Sasse <[email protected]> wrote:
> On Sun, 3 May 2009, Devyn Cairns wrote:
>
>> Oh, and it flickers a lot before it dies.
>>
>> On Sun, May 3, 2009 at 9:03 AM, Devyn Cairns <[email protected]> wrote:
>> > What do you mean? This is what it does for me:
>> > (attached)
>> >
>> > On Sat, May 2, 2009 at 10:53 PM, Len Lawrence <[email protected]> 
>> > wrote:
>> >> Devyn Cairns wrote:
>> >>>
>> >>> Stumbled on this by accident. Try this and see what you get:
>> >>>
>> >>>    Shoes.app do
>> >>>        Thread.start do
>> >>>            400.times { para '', :stroke => black }
>> >>>        end
>> >>>    end
>> >>>
>> >>> --
>> >>>   ~devyn
>> >>>
>
> I've tried to put some diagnostics around this, to repeat the process
> till it blows up but tell you about how far it got.  This is on the basis
> that it would allow us to compare the bugs across platforms better.
>
> Threads in Ruby 1.8 are supposed to be in process.  I've closed the
> shoes app, had the cmd window associated with it disappear, and then
> had a load of shoes windows pop up afterwards.  Once a window
> containing the number 499 popped up but there is no way I've seen
> 400 windows come and go.
>
> Anyway, here is the code.  Maybe someone else can make it behave.
>
> #!shoes
> #
> #
>
> require 'thread'
>
> Shoes.app do
>
>  def new_app(count)
>    win = window do
>      stack do
>        owner.replace_label "Threads to start"
>        th = Thread.start do
>          count.times { para '', :stroke => black }
>        end
>        th.join
>        owner.replace_label "Threads done"
>      end
>    end
>
>    while not win.started()
>      owner.replace_label "win not started"
>      sleep 1
>    end
>    sleep 1
>    return win
>  end
>
>  Thread.abort_on_exception=true
> �...@mutex = Mutex.new
> �...@count = 0
> �[email protected] do
>   �...@label = para "#...@count}"
>  end
>
>  def replace_label str
>   �[email protected] do
>     �[email protected] "#{count} " + str
>    end
>  end
>
>  clipboard = @count
>  500.times do |i|
>   �...@count = i
>    replace_label ""
>    win = new_app(@count)
>    replace_label "got window"
>    sleep 5
>    win.close
>  end
> end
>
>
> #       Hugh



-- 
    ~devyn

Reply via email to