[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:30414] Re: tk doesn't startup well in doze

From: Hidetoshi NAGAI <nagai@...>
Date: 2010-05-25 08:46:03 UTC
List: ruby-core #30414
From: Roger Pack <rogerdpack2@gmail.com>
Subject: [ruby-core:30397] Re: tk doesn't startup well in doze
Date: Tue, 25 May 2010 01:21:58 +0900
Message-ID: <AANLkTilPQ1cPhsCOA9c3K-dh631kglAgGjSfkbD8d5Ah@mail.gmail.com>
> > Does it occur with RubyTk-Kit version (it based on latest tcltklib.c)?
> It doesn't (nice).  Just with 8.5 built from source with msys/mingw.
> Haven't tried with 8.4
> 
> I did notice that with the rubytk-kit and the other they both open up
> a "mystery" tk window in the background when I do the
> require 'tk'
    (snip)
> > If call the following before "require 'tk'", does anything change?
> > ------------------------------------------------
> > module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
> 
> It seems that fixes all the above problems.  The mystery window
> doesn't appear, I am able to exit without hanging, and no error
> message is output.

Maybe I see the reason of the problem.
Could you do one more try?
Please call the following before "require 'tk'".
-------------------------------------------------------------
 module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = false; end
-------------------------------------------------------------
                                               ^^^^^
Probably, it has no error message and show a root window 
after calling "require 'tk'".

Ruby1.9 uses one native thread for one ruby thread.
But Tk (eventloop) must run on the native thread on which a Tcl/Tk
interpreter is initialized.

tk.rb on Ruby1.8 creates a Tcl/Tk interpreter when required.
But when it is used on Ruby 1.9, Tk.mainloop must be called on the
main thread (that is, Thread.new{Tk.mainloop} doesn't work) because
the Tcl/Tk interpreter is initialized on the main thread.

So, on Ruby1.9, tk.rb creates a thread on which a Tcl/Tk interpreter
is initialized and an eventloop is running. And then,
Thread.new{Tk.mainloop} will work. But as its side effect, a root
window is displayed as soon as tk.rb is required.

However, TkAqua on MacOS X may run on a main nativethread only.
It means that both of initializing a Tcl/TkAqua interpreter and
starting Tk.mainloop must be done on the main thread.

TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD can select those running mode 
at "require 'tk'" (cannot change after that).
When true, Tk.mainloop can be run on the main thread only.
If the constant is not defined, tk.rb creates and deletes a Tcl/Tk
interpreter to check its environment.
I think that the deleted interpreter raises the problem.

To remove creating the dummy interpreter from tk.rb, extconf.rb on
Mac OSX must check Tcl/Tk libraries in detail.
Please give me time to fix, because I'm not familiar with development
on Mac OSX.
-- 
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

In This Thread