1 ! Copyright (C) 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.syntax kernel threads init namespaces alien
4 core-foundation calendar ;
5 IN: core-foundation.run-loop
7 : kCFRunLoopRunFinished 1 ; inline
8 : kCFRunLoopRunStopped 2 ; inline
9 : kCFRunLoopRunTimedOut 3 ; inline
10 : kCFRunLoopRunHandledSource 4 ; inline
12 TYPEDEF: void* CFRunLoopRef
14 FUNCTION: CFRunLoopRef CFRunLoopGetMain ( ) ;
15 FUNCTION: CFRunLoopRef CFRunLoopGetCurrent ( ) ;
17 FUNCTION: SInt32 CFRunLoopRunInMode (
19 CFTimeInterval seconds,
20 Boolean returnAfterSourceHandled
23 : CFRunLoopDefaultMode ( -- alien )
24 #! Ugly, but we don't have static NSStrings
25 \ CFRunLoopDefaultMode get-global dup expired? [
27 "kCFRunLoopDefaultMode" <CFString>
28 dup \ CFRunLoopDefaultMode set-global
31 : run-loop-thread ( -- )
32 CFRunLoopDefaultMode 0 f CFRunLoopRunInMode
33 kCFRunLoopRunHandledSource = [ 1 seconds sleep ] unless
36 : start-run-loop-thread ( -- )
37 [ run-loop-thread t ] "CFRunLoop dispatcher" spawn-server drop ;