[前][次][番号順一覧][スレッド一覧]

ruby-changes:4144

From: ko1@a...
Date: Fri, 29 Feb 2008 02:28:14 +0900 (JST)
Subject: [ruby-changes:4144] nagai - Ruby:r15634 (trunk): * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE

nagai	2008-02-29 02:27:41 +0900 (Fri, 29 Feb 2008)

  New Revision: 15634

  Modified files:
    trunk/ChangeLog
    trunk/ext/tk/lib/multi-tk.rb
    trunk/ext/tk/lib/tk/autoload.rb
    trunk/ext/tk/lib/tk/root.rb
    trunk/ext/tk/lib/tk/text.rb
    trunk/ext/tk/lib/tk.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb

  Log:
    * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
    
    * ext/tk/lib/tk.rb, ext/tk/lib/tk/text.rb,
      ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: remove adhoc check 
      of Ruby's features (use existence of some classes instead of 
      comparing with RUBY_VERSION)
    
    * ext/tk/lib/tk/root.rb, ext/tk/lib/tk/autoload.rb: make TkRoot 
      (Tk::Root) unswitchable
    
    * ext/tk/lib/multi-tk.rb: partial bug fix (still not work!!)


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/root.rb?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk.rb?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/multi-tk.rb?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/text.rb?r1=15634&r2=15633&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/autoload.rb?r1=15634&r2=15633&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15633)
+++ ChangeLog	(revision 15634)
@@ -1,3 +1,17 @@
+Fri Feb 29 02:24:22 2008  Hidetoshi NAGAI  <nagai@a...>
+
+	* ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
+
+	* ext/tk/lib/tk.rb, ext/tk/lib/tk/text.rb,
+	  ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: remove adhoc check 
+	  of Ruby's features (use existence of some classes instead of 
+	  comparing with RUBY_VERSION)
+
+	* ext/tk/lib/tk/root.rb, ext/tk/lib/tk/autoload.rb: make TkRoot 
+	  (Tk::Root) unswitchable
+
+	* ext/tk/lib/multi-tk.rb: partial bug fix (still not work!!)
+
 Thu Feb 28 23:37:12 2008  Tanaka Akira  <akr@f...>
 
 	* lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): use ASCII-8BIT
Index: ext/tk/lib/tk.rb
===================================================================
--- ext/tk/lib/tk.rb	(revision 15633)
+++ ext/tk/lib/tk.rb	(revision 15634)
@@ -1076,11 +1076,16 @@
   end
 end
 
+
 module TkCore
   include TkComm
   extend TkComm
 
+  WITH_RUBY_VM  = Object.const_defined?(:VM) && ::VM.class == Class
+  WITH_ENCODING = Object.const_defined?(:Encoding) && ::Encoding.class == Class
+
   unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD
+    ### Ruby 1.9 !!!!!!!!!!!!!!!!!!!!!!!!!!
     RUN_EVENTLOOP_ON_MAIN_THREAD = false
   end
 
@@ -1101,7 +1106,7 @@
       opts = ''
     end
 
-    if RUBY_VERSION < '1.9.0' || RUN_EVENTLOOP_ON_MAIN_THREAD ### !!!!!!!!!!!
+    if !WITH_RUBY_VM || RUN_EVENTLOOP_ON_MAIN_THREAD ### Ruby 1.9 !!!!!!!!!!!
       INTERP = TclTkIp.new(name, opts)
     else
       require 'thread'
@@ -1589,8 +1594,8 @@
   end
 
   def mainloop(check_root = true)
-    if RUBY_VERSION < '1.9.0' || 
-        TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD ### !!!!!!!!!!!
+    if !TkCore::WITH_RUBY_VM || TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD
+      ### Ruby 1.9 !!!!!!!!!!!
       TclTkLib.mainloop(check_root)
     else
       begin
@@ -1618,8 +1623,8 @@
     # nil   : there is no mainloop
     # false : mainloop is running on the other thread
     #         ( At then, it is dangerous to call Tk interpreter directly. )
-    if RUBY_VERSION < '1.9.0' || 
-        TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD ### !!!!!!!!!!!
+    if !TkCore::WITH_RUBY_VM || TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD
+      ### Ruby 1.9 !!!!!!!!!!!
       TclTkLib.mainloop_thread?
     else
       Thread.current == INTERP_THREAD
@@ -1859,6 +1864,7 @@
   end
 end
 
+
 module Tk
   include TkCore
   extend Tk
@@ -1974,7 +1980,7 @@
   end
 
   def root
-    TkRoot.new
+    Tk::Root.new
   end
 
   def Tk.load_tclscript(file, enc=nil)
@@ -2465,7 +2471,7 @@
   end
 
   # estimate encoding
-  if RUBY_VERSION < '1.9.0'
+  unless TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!
     case $KCODE
     when /^e/i  # EUC
       Tk.encoding = 'euc-jp'
@@ -4742,7 +4748,7 @@
 #Tk.freeze
 
 module Tk
-  RELEASE_DATE = '2007-12-21'.freeze
+  RELEASE_DATE = '2008-02-29'.freeze
 
   autoload :AUTO_PATH,        'tk/variable'
   autoload :TCL_PACKAGE_PATH, 'tk/variable'
Index: ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb	(revision 15633)
+++ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb	(revision 15634)
@@ -322,7 +322,7 @@
 
 
   def _ktext_length(txt)
-    if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!!!
+    if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!!
       return txt.length
     end
     ###########################
Index: ext/tk/lib/multi-tk.rb
===================================================================
--- ext/tk/lib/multi-tk.rb	(revision 15633)
+++ ext/tk/lib/multi-tk.rb	(revision 15634)
@@ -695,6 +695,8 @@
 
   ######################################
 
+  WITH_RUBY_VM  = Object.const_defined?(:VM) && ::VM.class == Class
+
   if self.const_defined? :DEFAULT_MASTER_NAME
     name = DEFAULT_MASTER_NAME.to_s
   else
@@ -723,9 +725,9 @@
       fail ArgumentError, "expecting a Hash object for the 2nd argument"
     end
 
-    if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+    unless WITH_RUBY_VM
       @interp = TclTkIp.new(name, _keys2opts(keys))
-    else
+    else ### Ruby 1.9 !!!!!!!!!!!
       @interp_thread = Thread.new{
         Thread.current[:interp] = interp = TclTkIp.new(name, _keys2opts(keys))
         #sleep
@@ -876,22 +878,26 @@
     Thread.new{
       current = Thread.current
       loop {
-        mtx, ret, table, script = @init_ip_env_queue.deq
-        begin        
+        mtx, cond, ret, table, script = @init_ip_env_queue.deq
+        begin
           ret[0] = table.each{|tg, ip| ip._init_ip_env(script) }
         rescue Exception => e
           ret[0] = e
         ensure
-          mtx.unlock
+          mtx.synchronize{ cond.signal }
         end
+        mtx = cond = ret = table = script = nil  # clear variables for GC
       }
     }
 
     def self.__init_ip_env__(table, script)
       ret = []
-      mtx = Mutex.new.lock
-      @init_ip_env_queue.enq([mtx, ret, table, script])
-      # mtx.lock
+      mtx  = (Thread.current[:MultiTk_ip_Mutex] ||= Mutex.new)
+      cond = (Thread.current[:MultiTk_ip_CondVar] ||= ConditionVariable.new)
+      mtx.synchronize{
+        @init_ip_env_queue.enq([mtx, cond, ret, table, script])
+        cond.wait(mtx)
+      }
       if ret[0].kind_of?(Exception)
         raise ret[0]
       else
@@ -1229,9 +1235,9 @@
 
     if safeip == nil
       # create master-ip
-      if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+      unless WITH_RUBY_VM
         @interp = TclTkIp.new(name, _keys2opts(tk_opts))
-      else
+      else ### Ruby 1.9 !!!!!!!!!!!
         @interp_thread = Thread.new{
           Thread.current[:interp] = interp = TclTkIp.new(name, _keys2opts(tk_opts))
           #sleep
@@ -1257,7 +1263,8 @@
         @safe_base = true
         @interp, @ip_name = master.__create_safe_slave_obj(safe_opts, 
                                                            name, tk_opts)
-        @interp_thread = nil if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+        # @interp_thread = nil if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+        @interp_thread = nil unless WITH_RUBY_VM  ### Ruby 1.9 !!!!!!!!!!!
         if safe
           safe = master.safe_level if safe < master.safe_level
           @safe_level = [safe]
@@ -1266,7 +1273,8 @@
         end
       else
         @interp, @ip_name = master.__create_trusted_slave_obj(name, tk_opts)
-        @interp_thread = nil if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+        # @interp_thread = nil if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+        @interp_thread = nil unless WITH_RUBY_VM  ### Ruby 1.9 !!!!!!!!!!!
         if safe
           safe = master.safe_level if safe < master.safe_level
           @safe_level = [safe]
@@ -2377,7 +2385,7 @@
   def mainloop(check_root = true, restart_on_dead = true)
     raise SecurityError, "no permission to manipulate" unless self.manipulable?
 
-    if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!
+    unless WITH_RUBY_VM  ### Ruby 1.9 !!!!!!!!!!!
       return @interp_thread.value if @interp_thread
     end
 
Index: ext/tk/lib/tk/text.rb
===================================================================
--- ext/tk/lib/tk/text.rb	(revision 15633)
+++ ext/tk/lib/tk/text.rb	(revision 15634)
@@ -1182,7 +1182,7 @@
   end
 
   def _ktext_length(txt)
-    if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!!!
+    if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!!
       return txt.length
     end
     ###########################
@@ -1541,7 +1541,7 @@
   # Tk8.5 feature
   def initialize(text, parent=nil, keys={})
     unless text.kind_of?(Tk::Text)
-      fail ArgumentError, "TkText is expected for 1st argument"
+      fail ArgumentError, "Tk::Text is expected for 1st argument"
     end
     @src_text = text
     super(parent, keys)
Index: ext/tk/lib/tk/root.rb
===================================================================
--- ext/tk/lib/tk/root.rb	(revision 15633)
+++ ext/tk/lib/tk/root.rb	(revision 15634)
@@ -86,5 +86,4 @@
   end
 end
 
-#TkRoot = Tk::Root unless Object.const_defined? :TkRoot
-Tk.__set_toplevel_aliases__(:Tk, Tk::Root, :TkRoot)
+TkRoot = Tk::Root unless Object.const_defined? :TkRoot
Index: ext/tk/lib/tk/autoload.rb
===================================================================
--- ext/tk/lib/tk/autoload.rb	(revision 15633)
+++ ext/tk/lib/tk/autoload.rb	(revision 15634)
@@ -192,6 +192,8 @@
 
 autoload :TkPalette,          'tk/palette'
 
+autoload :TkRoot,             'tk/root'
+
 autoload :TkScrollbox,        'tk/scrollbox'
 
 autoload :TkSelection,        'tk/selection'
@@ -294,7 +296,7 @@
     :TkRadioButton        => 'tk/radiobutton', 
     :TkRadiobutton        => 'tk/radiobutton', 
 
-    :TkRoot               => 'tk/root', 
+    # :TkRoot               => 'tk/root', 
 
     :TkScale              => 'tk/scale', 
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]