40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2008 Slava Pestov
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| USING: alien.syntax kernel threads init namespaces alien
 | |
| core-foundation ;
 | |
| IN: core-foundation.run-loop
 | |
| 
 | |
| : kCFRunLoopRunFinished 1 ; inline
 | |
| : kCFRunLoopRunStopped 2 ; inline
 | |
| : kCFRunLoopRunTimedOut 3 ; inline
 | |
| : kCFRunLoopRunHandledSource 4 ; inline
 | |
| 
 | |
| TYPEDEF: void* CFRunLoopRef
 | |
| 
 | |
| FUNCTION: CFRunLoopRef CFRunLoopGetMain ( ) ;
 | |
| FUNCTION: CFRunLoopRef CFRunLoopGetCurrent ( ) ;
 | |
| 
 | |
| FUNCTION: SInt32 CFRunLoopRunInMode (
 | |
|    CFStringRef mode,
 | |
|    CFTimeInterval seconds,
 | |
|    Boolean returnAfterSourceHandled
 | |
| ) ;
 | |
| 
 | |
| : CFRunLoopDefaultMode ( -- alien )
 | |
|     #! Ugly, but we don't have static NSStrings
 | |
|     \ CFRunLoopDefaultMode get-global dup expired? [
 | |
|         drop
 | |
|         "kCFRunLoopDefaultMode" <CFString>
 | |
|         dup \ CFRunLoopDefaultMode set-global
 | |
|     ] when ;
 | |
| 
 | |
| : run-loop-thread ( -- )
 | |
|     CFRunLoopDefaultMode 0 f CFRunLoopRunInMode
 | |
|     kCFRunLoopRunHandledSource = [ 1000 sleep ] unless
 | |
|     run-loop-thread ;
 | |
| 
 | |
| : start-run-loop-thread ( -- )
 | |
|     [ run-loop-thread t ] "CFRunLoop dispatcher" spawn-server drop ;
 | |
| 
 | |
| [ start-run-loop-thread ] "core-foundation.run-loop" add-init-hook
 |