Revision: 4328 http://trac.macosforge.org/projects/ruby/changeset/4328 Author: ernest.prabhakar@gmail.com Date: 2010-07-07 16:06:51 -0700 (Wed, 07 Jul 2010) Log Message: ----------- Make Dispatch::Source conversions more robust Modified Paths: -------------- MacRuby/trunk/lib/dispatch/README.rdoc MacRuby/trunk/lib/dispatch/source.rb MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb Modified: MacRuby/trunk/lib/dispatch/README.rdoc =================================================================== --- MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-07 23:06:50 UTC (rev 4327) +++ MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-07 23:06:51 UTC (rev 4328) @@ -486,11 +486,11 @@ puts "Dispatch::Source.signal: #{s.data} (#{@signals += s.data})" end + puts "signals: #{@signals} => 0" signal.suspend! Signal.trap(sig_usr2, "IGNORE") 3.times { Process.kill(sig_usr2, $$) } Signal.trap(sig_usr2, "DEFAULT") - puts "signals: #{@signals} => 0" signal.resume! q.sync {} puts "signals: #{@signals} => 3" Modified: MacRuby/trunk/lib/dispatch/source.rb =================================================================== --- MacRuby/trunk/lib/dispatch/source.rb 2010-07-07 23:06:50 UTC (rev 4327) +++ MacRuby/trunk/lib/dispatch/source.rb 2010-07-07 23:06:51 UTC (rev 4328) @@ -21,7 +21,8 @@ class << self def event2num(e) - value = e.to_int rescue @@events[e.to_sym] + return 0 if e.nil? + value = e.to_int rescue @@events[e.to_sym] raise ArgumentError, "No event type #{e.inspect}" if value.nil? value end Modified: MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb =================================================================== --- MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-07 23:06:50 UTC (rev 4327) +++ MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-07 23:06:51 UTC (rev 4328) @@ -166,11 +166,11 @@ signal = Dispatch::Source.signal(sig_usr2, q) do |s| puts "Dispatch::Source.signal: #{s.data} (#{@signals += s.data})" end +puts "signals: #{@signals} => 0" signal.suspend! Signal.trap(sig_usr2, "IGNORE") 3.times { Process.kill(sig_usr2, $$) } Signal.trap(sig_usr2, "DEFAULT") -puts "signals: #{@signals} => 0" signal.resume! q.sync {} puts "signals: #{@signals} => 3"