| 
									
										
										
										
											2008-04-11 13:18:39 -04:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-04-11 14:20:03 -04:00
										 |  |  | USING: alien.syntax kernel threads init namespaces alien | 
					
						
							|  |  |  | core-foundation ;
 | 
					
						
							| 
									
										
										
										
											2008-04-11 13:18:39 -04:00
										 |  |  | IN: core-foundation.run-loop | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : kCFRunLoopRunFinished 1 ; inline
 | 
					
						
							|  |  |  | : kCFRunLoopRunStopped 2 ; inline
 | 
					
						
							|  |  |  | : kCFRunLoopRunTimedOut 3 ; inline
 | 
					
						
							|  |  |  | : kCFRunLoopRunHandledSource 4 ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TYPEDEF: void* CFRunLoopRef | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-11 14:20:03 -04:00
										 |  |  | FUNCTION: CFRunLoopRef CFRunLoopGetMain ( ) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-11 13:18:39 -04:00
										 |  |  | FUNCTION: SInt32 CFRunLoopRunInMode (
 | 
					
						
							|  |  |  |    CFStringRef mode, | 
					
						
							|  |  |  |    CFTimeInterval seconds, | 
					
						
							|  |  |  |    Boolean returnAfterSourceHandled | 
					
						
							|  |  |  | ) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-11 14:20:03 -04:00
										 |  |  | : CFRunLoopDefaultMode ( -- alien )
 | 
					
						
							|  |  |  |     #! Ugly, but we don't have static NSStrings | 
					
						
							|  |  |  |     \ CFRunLoopDefaultMode get-global dup expired? [ | 
					
						
							|  |  |  |         drop
 | 
					
						
							|  |  |  |         "kCFRunLoopDefaultMode" <CFString> | 
					
						
							|  |  |  |         dup \ CFRunLoopDefaultMode set-global
 | 
					
						
							|  |  |  |     ] when ;
 | 
					
						
							| 
									
										
										
										
											2008-04-11 13:18:39 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : 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 |