ヱイです。
以下の環境で試しました。
MacOSX 10.5.4 (intel mac)
Tcl/Tk 8.5.3
ruby 1.9.0-2
Tcl/Tkはソースからインストールしています。
configureオプションは以下で行なっています。
Tcl
./configure --enable-threads --enable-shared --enable-framework
Tk
./configure --with-tcl=../../tcl8.5.3/macos --enable-threads --
enable-shared --enable-aqua --enable-framework
rubyに関しては以下のようにしています。
./configure --prefix=${HOME}/tmp/ruby192 --with-readline-dir=/opt/
local --enable-shared --enable-pthread --enable-tcltk-framework
tcltklib.cのpatchをあててビルド
この状態で
ext/tk/sample/demos-jp/widget
を実行すると、天野さんの報告にあった、以下のエラーが出力され
ました。
% ruby widget
Tk_MacOSXSetupTkNotifier: first [load] of TkAqua has to occur in the
main thread!
Abort
%
Tcl/Tkを手動でインストールする前は問題なく起動しております。
つまり手動でインストールした事により、該当の現象が
Intel Macでも起きました。
という事で、永井さんのメールにあった、
module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
require 'tk'
というようにrequireの前に持って来て実行した所、無事に起
動しました。
という事で、
・Intel MacでもTcl/Tkによっては問題の現象が起きる
・問題の現象が起きてもmain threadで実行すれば解決する
(少くてもIntel Macでは)
となりそうです。
以上です。
----
ヱイ
weimayamiew@xxxxx