factor/library/cocoa/application-utils.factor

32 lines
918 B
Factor
Raw Normal View History

2006-02-09 20:36:11 -05:00
! Copyright (C) 2006 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
IN: cocoa
2006-02-09 22:11:22 -05:00
USING: alien errors kernel namespaces objc-NSApplication
objc-NSAutoreleasePool objc-NSObject threads ;
2006-02-09 20:36:11 -05:00
: with-autorelease-pool ( quot -- )
2006-02-09 22:11:22 -05:00
NSAutoreleasePool [new] slip [release] ; inline
2006-02-09 20:36:11 -05:00
: <NSString> <CFString> [autorelease] ;
2006-02-09 22:11:22 -05:00
: CFRunLoopDefaultMode "kCFRunLoopDefaultMode" <NSString> ;
: next-event ( app -- event )
0 f CFRunLoopDefaultMode 1
2006-02-09 20:36:11 -05:00
[nextEventMatchingMask:untilDate:inMode:dequeue:] ;
: do-events ( app -- )
2006-02-09 22:11:22 -05:00
dup next-event [ dupd [sendEvent:] do-events ] [ drop ] if* ;
2006-02-09 20:36:11 -05:00
2006-02-09 22:11:22 -05:00
: (event-loop) ( -- )
2006-02-09 20:36:11 -05:00
[
NSApplication [sharedApplication] do-events
2006-02-09 22:11:22 -05:00
] with-autorelease-pool 10 sleep (event-loop) ;
: event-loop ( -- )
\ NSApplication get expired? [
NSApplication [sharedApplication]
\ NSApplication set-global
[ (event-loop) ] in-thread
] when ;