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
 |