[MacRuby] #664: MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a Background Thread

MacRuby ruby-noreply at macosforge.org
Sat Dec 4 13:02:36 PST 2010


#664: MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a
Background Thread
---------------------------------+------------------------------------------
 Reporter:  dylan@…              |       Owner:  lsansonetti@…        
     Type:  defect               |      Status:  new                  
 Priority:  blocker              |   Milestone:  MacRuby 1.0          
Component:  MacRuby              |    Keywords:  #reduction           
---------------------------------+------------------------------------------
Changes (by lsansonetti@…):

  * milestone:  => MacRuby 1.0


Comment:

 The following snippet (my suggestion) works fine in trunk.

 {{{
 framework 'Cocoa'

 NSApplication.sharedApplication

 def main_thread( &block )
   o = Object.new
   def o.call
     @block.call
   end
   o.instance_variable_set(:@block, block)
   o.performSelectorOnMainThread( 'call', withObject: nil, waitUntilDone:
 true )
 end

 Thread.new do
   main_thread do
     [1,2,3].each {|i| puts i }
   end
 end

 NSApp.run
 }}}

 The original doesn't, as ObjC is not able to perform selectors defined in
 MacRuby Core (in C), such as Proc#call. We should try to do something in
 1.0.

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/664#comment:10>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list