diff --git a/basis/bootstrap/finish-bootstrap.factor b/basis/bootstrap/finish-bootstrap.factor index 133b64acaa..36f6291bc6 100644 --- a/basis/bootstrap/finish-bootstrap.factor +++ b/basis/bootstrap/finish-bootstrap.factor @@ -12,5 +12,6 @@ namespaces eval kernel vocabs.loader io ; ignore-cli-args? not script get and [ run-script ] [ "run" get run ] if* output-stream get [ stream-flush ] when* + 0 exit ] [ print-error 1 exit ] recover ] set-boot-quot diff --git a/basis/bootstrap/finish-staging.factor b/basis/bootstrap/finish-staging.factor index a60ce04e15..49f504fd41 100644 --- a/basis/bootstrap/finish-staging.factor +++ b/basis/bootstrap/finish-staging.factor @@ -7,4 +7,5 @@ io ; (command-line) parse-command-line "run" get run output-stream get [ stream-flush ] when* + 0 exit ] set-boot-quot diff --git a/basis/bootstrap/stage2.factor b/basis/bootstrap/stage2.factor index fb7292b989..45a6c354a6 100644 --- a/basis/bootstrap/stage2.factor +++ b/basis/bootstrap/stage2.factor @@ -102,6 +102,8 @@ SYMBOL: bootstrap-time ] if ] [ drop - load-help? off - "resource:basis/bootstrap/bootstrap-error.factor" run-file + [ + load-help? off + "resource:basis/bootstrap/bootstrap-error.factor" run-file + ] with-scope ] recover diff --git a/basis/cocoa/application/application-docs.factor b/basis/cocoa/application/application-docs.factor index e12b6eb276..60a0232a2c 100644 --- a/basis/cocoa/application/application-docs.factor +++ b/basis/cocoa/application/application-docs.factor @@ -30,10 +30,6 @@ HELP: cocoa-app { $values { "quot" quotation } } { $description "Initializes Cocoa, calls the quotation, and starts the Cocoa event loop." } ; -HELP: do-event -{ $values { "app" "an " { $snippet "NSApplication" } } { "?" "a boolean" } } -{ $description "Processes a pending event in the queue, if any, returning a boolean indicating if there was one. Does not block." } ; - HELP: add-observer { $values { "observer" "an " { $snippet "NSObject" } } { "selector" string } { "name" "an " { $snippet "NSString" } } { "object" "an " { $snippet "NSObject" } } } { $description "Registers an observer with the " { $snippet "NSNotificationCenter" } " singleton." } ; @@ -52,7 +48,6 @@ HELP: objc-error ARTICLE: "cocoa-application-utils" "Cocoa application utilities" "Utilities:" { $subsection NSApp } -{ $subsection do-event } { $subsection add-observer } { $subsection remove-observer } { $subsection install-delegate } diff --git a/basis/cocoa/application/application.factor b/basis/cocoa/application/application.factor index a52aaedce2..ab2b6375a9 100644 --- a/basis/cocoa/application/application.factor +++ b/basis/cocoa/application/application.factor @@ -1,10 +1,10 @@ ! Copyright (C) 2006, 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.syntax io kernel namespaces core-foundation -core-foundation.run-loop core-foundation.arrays -core-foundation.data core-foundation.strings cocoa.messages -cocoa cocoa.classes cocoa.runtime sequences threads init summary -kernel.private assocs ; +core-foundation.arrays core-foundation.data +core-foundation.strings cocoa.messages cocoa cocoa.classes +cocoa.runtime sequences threads init summary kernel.private +assocs ; IN: cocoa.application : ( str -- alien ) -> autorelease ; @@ -35,13 +35,6 @@ FUNCTION: void NSBeep ( ) ; : with-cocoa ( quot -- ) [ NSApp drop call ] with-autorelease-pool ; inline -: next-event ( app -- event ) - NSAnyEventMask f CFRunLoopDefaultMode 1 - -> nextEventMatchingMask:untilDate:inMode:dequeue: ; - -: do-event ( app -- ? ) - dup next-event [ dupd -> sendEvent: -> updateWindows t ] [ drop f ] if* ; - : add-observer ( observer selector name object -- ) [ [ NSNotificationCenter -> defaultCenter ] 2dip diff --git a/basis/core-foundation/core-foundation.factor b/basis/core-foundation/core-foundation.factor index 0f64c0666f..6b7d81c862 100644 --- a/basis/core-foundation/core-foundation.factor +++ b/basis/core-foundation/core-foundation.factor @@ -14,8 +14,6 @@ TYPEDEF: int SInt32 TYPEDEF: uint UInt32 TYPEDEF: ulong CFTypeID TYPEDEF: UInt32 CFOptionFlags -TYPEDEF: double CFTimeInterval -TYPEDEF: double CFAbsoluteTime FUNCTION: CFTypeRef CFRetain ( CFTypeRef cf ) ; diff --git a/basis/core-foundation/fsevents/fsevents.factor b/basis/core-foundation/fsevents/fsevents.factor index 7ed040b455..b0c299a831 100644 --- a/basis/core-foundation/fsevents/fsevents.factor +++ b/basis/core-foundation/fsevents/fsevents.factor @@ -5,7 +5,8 @@ math sequences namespaces make assocs init accessors continuations combinators io.encodings.utf8 destructors locals arrays specialized-arrays.direct.alien specialized-arrays.direct.int specialized-arrays.direct.longlong -core-foundation core-foundation.run-loop core-foundation.strings ; +core-foundation core-foundation.run-loop core-foundation.strings +core-foundation.time ; IN: core-foundation.fsevents : kFSEventStreamCreateFlagUseCFTypes 2 ; inline diff --git a/basis/core-foundation/run-loop/run-loop.factor b/basis/core-foundation/run-loop/run-loop.factor index 475991a246..8b2106685a 100644 --- a/basis/core-foundation/run-loop/run-loop.factor +++ b/basis/core-foundation/run-loop/run-loop.factor @@ -1,8 +1,10 @@ ! Copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: alien alien.syntax kernel namespaces core-foundation -core-foundation.strings core-foundation.file-descriptors -core-foundation.timers ; +USING: accessors alien alien.syntax kernel math namespaces +sequences destructors combinators threads heaps deques calendar +core-foundation core-foundation.strings +core-foundation.file-descriptors core-foundation.timers +core-foundation.time ; IN: core-foundation.run-loop : kCFRunLoopRunFinished 1 ; inline @@ -59,3 +61,80 @@ FUNCTION: void CFRunLoopRemoveTimer ( "kCFRunLoopDefaultMode" dup \ CFRunLoopDefaultMode set-global ] when ; + +TUPLE: run-loop fds sources timers ; + +: ( -- run-loop ) + V{ } clone V{ } clone V{ } clone \ run-loop boa ; + +SYMBOL: expiry-check + +: run-loop ( -- run-loop ) + \ run-loop get-global not expiry-check get expired? or + [ + 31337 expiry-check set-global + dup \ run-loop set-global + ] [ \ run-loop get-global ] if ; + +: add-source-to-run-loop ( source -- ) + [ run-loop sources>> push ] + [ + CFRunLoopGetMain + swap CFRunLoopDefaultMode + CFRunLoopAddSource + ] bi ; + +: create-fd-source ( CFFileDescriptor -- source ) + f swap 0 CFFileDescriptorCreateRunLoopSource ; + +: add-fd-to-run-loop ( fd callback -- ) + [ + |CFRelease + [ run-loop fds>> push ] + [ create-fd-source |CFRelease add-source-to-run-loop ] + bi + ] with-destructors ; + +: add-timer-to-run-loop ( timer -- ) + [ run-loop timers>> push ] + [ + CFRunLoopGetMain + swap CFRunLoopDefaultMode + CFRunLoopAddTimer + ] bi ; + +CFAbsoluteTime CFRunLoopTimerSetNextFireDate ; + +: (reset-timer) ( timer counter -- ) + yield { + { [ dup 0 = ] [ now ((reset-timer)) ] } + { [ run-queue deque-empty? not ] [ 1- (reset-timer) ] } + { [ sleep-queue heap-empty? ] [ 5 minutes hence ((reset-timer)) ] } + [ sleep-queue heap-peek nip micros>timestamp ((reset-timer)) ] + } cond ; + +: reset-timer ( timer -- ) + 10 (reset-timer) ; + +PRIVATE> + +: reset-run-loop ( -- ) + run-loop + [ timers>> [ reset-timer ] each ] + [ fds>> [ enable-all-callbacks ] each ] bi ; + +: timer-callback ( -- callback ) + "void" { "CFRunLoopTimerRef" "void*" } "cdecl" + [ 2drop reset-run-loop yield ] alien-callback ; + +: init-thread-timer ( -- ) + timer-callback add-timer-to-run-loop ; + +: run-one-iteration ( us -- handled? ) + reset-run-loop + CFRunLoopDefaultMode + swap [ microseconds ] [ 5 minutes ] if* >CFTimeInterval + t CFRunLoopRunInMode kCFRunLoopRunHandledSource = ; diff --git a/basis/core-foundation/time/time.factor b/basis/core-foundation/time/time.factor new file mode 100644 index 0000000000..15ad7bb1a1 --- /dev/null +++ b/basis/core-foundation/time/time.factor @@ -0,0 +1,14 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: calendar alien.syntax ; +IN: core-foundation.time + +TYPEDEF: double CFTimeInterval +TYPEDEF: double CFAbsoluteTime + +: >CFTimeInterval ( duration -- interval ) + duration>seconds ; inline + +: >CFAbsoluteTime ( timestamp -- time ) + T{ timestamp { year 2001 } { month 1 } { day 1 } } time- + duration>seconds ; inline diff --git a/basis/core-foundation/timers/timers.factor b/basis/core-foundation/timers/timers.factor index 049e80b20f..51ee982592 100644 --- a/basis/core-foundation/timers/timers.factor +++ b/basis/core-foundation/timers/timers.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax system math kernel core-foundation ; +USING: alien.syntax system math kernel calendar core-foundation +core-foundation.time ; IN: core-foundation.timers TYPEDEF: void* CFRunLoopTimerRef @@ -18,12 +19,16 @@ FUNCTION: CFRunLoopTimerRef CFRunLoopTimerCreate ( ) ; : ( callback -- timer ) - [ f millis 1000 /f 60 0 0 ] dip f CFRunLoopTimerCreate ; + [ f now >CFAbsoluteTime 60 0 0 ] dip f CFRunLoopTimerCreate ; FUNCTION: void CFRunLoopTimerInvalidate ( CFRunLoopTimerRef timer ) ; +FUNCTION: Boolean CFRunLoopTimerIsValid ( + CFRunLoopTimerRef timer +) ; + FUNCTION: void CFRunLoopTimerSetNextFireDate ( CFRunLoopTimerRef timer, CFAbsoluteTime fireDate diff --git a/basis/io/thread/thread.factor b/basis/io/thread/thread.factor index fe86ba9e3d..7589d4918e 100644 --- a/basis/io/thread/thread.factor +++ b/basis/io/thread/thread.factor @@ -1,14 +1,20 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. +USING: threads io.backend namespaces init math kernel ; IN: io.thread -USING: threads io.backend namespaces init math ; + +! The Cocoa UI backend stops the I/O thread and takes over +! completely. +SYMBOL: io-thread-running? : io-thread ( -- ) sleep-time io-multiplex yield ; : start-io-thread ( -- ) - [ io-thread t ] - "I/O wait" spawn-server - \ io-thread set-global ; + [ [ io-thread-running? get-global ] [ io-thread ] [ ] while ] + "I/O wait" spawn drop ; -[ start-io-thread ] "io.thread" add-init-hook +[ + t io-thread-running? set-global + start-io-thread +] "io.thread" add-init-hook diff --git a/basis/io/unix/multiplexers/run-loop/run-loop-tests.factor b/basis/io/unix/multiplexers/run-loop/run-loop-tests.factor deleted file mode 100644 index 5f249c6881..0000000000 --- a/basis/io/unix/multiplexers/run-loop/run-loop-tests.factor +++ /dev/null @@ -1,5 +0,0 @@ -USING: io.unix.multiplexers.run-loop tools.test -destructors ; -IN: io.unix.multiplexers.run-loop.tests - -[ ] [ dispose ] unit-test diff --git a/basis/io/unix/multiplexers/run-loop/run-loop.factor b/basis/io/unix/multiplexers/run-loop/run-loop.factor index 7b80e461dc..4b2486d19f 100644 --- a/basis/io/unix/multiplexers/run-loop/run-loop.factor +++ b/basis/io/unix/multiplexers/run-loop/run-loop.factor @@ -1,50 +1,27 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel namespaces math accessors threads alien locals -destructors combinators io.unix.multiplexers +USING: kernel arrays namespaces math accessors alien locals +destructors system threads io.unix.multiplexers io.unix.multiplexers.kqueue core-foundation -core-foundation.run-loop core-foundation.file-descriptors ; +core-foundation.run-loop ; IN: io.unix.multiplexers.run-loop -TUPLE: run-loop-mx kqueue-mx fd source ; +TUPLE: run-loop-mx kqueue-mx ; -: kqueue-callback ( -- callback ) +: file-descriptor-callback ( -- callback ) "void" { "CFFileDescriptorRef" "CFOptionFlags" "void*" } "cdecl" [ 3drop 0 mx get kqueue-mx>> wait-for-events - mx get fd>> enable-all-callbacks + reset-run-loop yield - ] - alien-callback ; - -SYMBOL: kqueue-run-loop-source - -: create-kqueue-source ( fd -- source ) - f swap 0 CFFileDescriptorCreateRunLoopSource ; - -: add-kqueue-to-run-loop ( mx -- ) - CFRunLoopGetMain swap source>> CFRunLoopDefaultMode CFRunLoopAddSource ; - -: remove-kqueue-from-run-loop ( source -- ) - CFRunLoopGetMain swap source>> CFRunLoopDefaultMode CFRunLoopRemoveSource ; + ] alien-callback ; : ( -- mx ) [ |dispose - dup fd>> kqueue-callback |dispose - dup create-kqueue-source run-loop-mx boa - dup add-kqueue-to-run-loop - ] with-destructors ; - -M: run-loop-mx dispose - [ - { - [ fd>> &CFRelease drop ] - [ source>> &CFRelease drop ] - [ remove-kqueue-from-run-loop ] - [ kqueue-mx>> &dispose drop ] - } cleave + dup fd>> file-descriptor-callback add-fd-to-run-loop + run-loop-mx boa ] with-destructors ; M: run-loop-mx add-input-callback kqueue-mx>> add-input-callback ; @@ -52,7 +29,5 @@ M: run-loop-mx add-output-callback kqueue-mx>> add-output-callback ; M: run-loop-mx remove-input-callbacks kqueue-mx>> remove-input-callbacks ; M: run-loop-mx remove-output-callbacks kqueue-mx>> remove-output-callbacks ; -M:: run-loop-mx wait-for-events ( us mx -- ) - mx fd>> enable-all-callbacks - CFRunLoopDefaultMode us [ 1000000 /f ] [ 60 ] if* t CFRunLoopRunInMode - kCFRunLoopRunHandledSource = [ 0 mx wait-for-events ] when ; +M: run-loop-mx wait-for-events ( us mx -- ) + swap run-one-iteration [ 0 swap wait-for-events ] [ drop ] if ; diff --git a/extra/opengl/capabilities/authors.txt b/basis/opengl/capabilities/authors.txt similarity index 100% rename from extra/opengl/capabilities/authors.txt rename to basis/opengl/capabilities/authors.txt diff --git a/extra/opengl/capabilities/capabilities-docs.factor b/basis/opengl/capabilities/capabilities-docs.factor similarity index 100% rename from extra/opengl/capabilities/capabilities-docs.factor rename to basis/opengl/capabilities/capabilities-docs.factor diff --git a/extra/opengl/capabilities/capabilities.factor b/basis/opengl/capabilities/capabilities.factor similarity index 100% rename from extra/opengl/capabilities/capabilities.factor rename to basis/opengl/capabilities/capabilities.factor diff --git a/extra/opengl/capabilities/summary.txt b/basis/opengl/capabilities/summary.txt similarity index 100% rename from extra/opengl/capabilities/summary.txt rename to basis/opengl/capabilities/summary.txt diff --git a/extra/opengl/capabilities/tags.txt b/basis/opengl/capabilities/tags.txt similarity index 100% rename from extra/opengl/capabilities/tags.txt rename to basis/opengl/capabilities/tags.txt diff --git a/extra/opengl/framebuffers/authors.txt b/basis/opengl/framebuffers/authors.txt similarity index 100% rename from extra/opengl/framebuffers/authors.txt rename to basis/opengl/framebuffers/authors.txt diff --git a/extra/opengl/framebuffers/framebuffers-docs.factor b/basis/opengl/framebuffers/framebuffers-docs.factor similarity index 100% rename from extra/opengl/framebuffers/framebuffers-docs.factor rename to basis/opengl/framebuffers/framebuffers-docs.factor diff --git a/extra/opengl/framebuffers/framebuffers.factor b/basis/opengl/framebuffers/framebuffers.factor similarity index 100% rename from extra/opengl/framebuffers/framebuffers.factor rename to basis/opengl/framebuffers/framebuffers.factor diff --git a/extra/opengl/framebuffers/summary.txt b/basis/opengl/framebuffers/summary.txt similarity index 100% rename from extra/opengl/framebuffers/summary.txt rename to basis/opengl/framebuffers/summary.txt diff --git a/extra/opengl/framebuffers/tags.txt b/basis/opengl/framebuffers/tags.txt similarity index 100% rename from extra/opengl/framebuffers/tags.txt rename to basis/opengl/framebuffers/tags.txt diff --git a/extra/opengl/shaders/authors.txt b/basis/opengl/shaders/authors.txt similarity index 100% rename from extra/opengl/shaders/authors.txt rename to basis/opengl/shaders/authors.txt diff --git a/extra/opengl/shaders/shaders-docs.factor b/basis/opengl/shaders/shaders-docs.factor similarity index 100% rename from extra/opengl/shaders/shaders-docs.factor rename to basis/opengl/shaders/shaders-docs.factor diff --git a/extra/opengl/shaders/shaders.factor b/basis/opengl/shaders/shaders.factor similarity index 97% rename from extra/opengl/shaders/shaders.factor rename to basis/opengl/shaders/shaders.factor index 476bb1be71..5b63b63afe 100755 --- a/extra/opengl/shaders/shaders.factor +++ b/basis/opengl/shaders/shaders.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: kernel opengl.gl alien.c-types continuations namespaces assocs alien alien.strings libc opengl math sequences combinators -combinators.lib macros arrays io.encodings.ascii fry -specialized-arrays.uint destructors accessors ; +macros arrays io.encodings.ascii fry specialized-arrays.uint +destructors accessors ; IN: opengl.shaders : with-gl-shader-source-ptr ( string quot -- ) diff --git a/extra/opengl/shaders/summary.txt b/basis/opengl/shaders/summary.txt similarity index 100% rename from extra/opengl/shaders/summary.txt rename to basis/opengl/shaders/summary.txt diff --git a/extra/opengl/shaders/tags.txt b/basis/opengl/shaders/tags.txt similarity index 100% rename from extra/opengl/shaders/tags.txt rename to basis/opengl/shaders/tags.txt diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 3d4944841d..135679444b 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -365,6 +365,7 @@ SYMBOL: deploy-vocab init-hooks get values concat % , strip-io? [ \ flush , ] unless + [ 0 exit ] % ] [ ] make set-boot-quot ; diff --git a/basis/tools/deploy/shaker/strip-cocoa.factor b/basis/tools/deploy/shaker/strip-cocoa.factor index 773b2d0f3b..df64443b7b 100644 --- a/basis/tools/deploy/shaker/strip-cocoa.factor +++ b/basis/tools/deploy/shaker/strip-cocoa.factor @@ -19,12 +19,8 @@ IN: cocoa.application [ [ die ] 19 setenv ] "cocoa.application" add-init-hook -"stop-after-last-window?" get - H{ } clone \ pool [ global [ - "stop-after-last-window?" "ui" lookup set - ! Only keeps those methods that we actually call sent-messages get super-sent-messages get assoc-union objc-methods [ assoc-intersect pool-values ] change diff --git a/basis/ui/backend/backend.factor b/basis/ui/backend/backend.factor index aa84419d64..eaa0953d25 100755 --- a/basis/ui/backend/backend.factor +++ b/basis/ui/backend/backend.factor @@ -5,8 +5,6 @@ IN: ui.backend SYMBOL: ui-backend -HOOK: do-events ui-backend ( -- ) - HOOK: set-title ui-backend ( string world -- ) HOOK: set-fullscreen* ui-backend ( ? world -- ) diff --git a/basis/ui/cocoa/cocoa.factor b/basis/ui/cocoa/cocoa.factor index fecbb52a25..331c0a698c 100755 --- a/basis/ui/cocoa/cocoa.factor +++ b/basis/ui/cocoa/cocoa.factor @@ -3,10 +3,11 @@ USING: accessors math arrays assocs cocoa cocoa.application command-line kernel memory namespaces cocoa.messages cocoa.runtime cocoa.subclassing cocoa.pasteboard cocoa.types -cocoa.windows cocoa.classes cocoa.nibs sequences system -ui ui.backend ui.clipboards ui.gadgets ui.gadgets.worlds -ui.cocoa.views core-foundation threads math.geometry.rect fry -libc generalizations alien.c-types cocoa.views combinators ; +cocoa.windows cocoa.classes cocoa.nibs sequences system ui +ui.backend ui.clipboards ui.gadgets ui.gadgets.worlds +ui.cocoa.views core-foundation core-foundation.run-loop threads +math.geometry.rect fry libc generalizations alien.c-types +cocoa.views combinators io.thread ; IN: ui.cocoa TUPLE: handle ; @@ -18,9 +19,6 @@ C: offscreen-handle SINGLETON: cocoa-ui-backend -M: cocoa-ui-backend do-events ( -- ) - [ NSApp '[ _ do-event ] loop ui-wait ] with-autorelease-pool ; - TUPLE: pasteboard handle ; C: pasteboard @@ -134,8 +132,8 @@ CLASS: { { +name+ "FactorApplicationDelegate" } } -{ "applicationDidFinishLaunching:" "void" { "id" "SEL" "id" } - [ 3drop event-loop ] +{ "applicationDidUpdate:" "void" { "id" "SEL" "id" } + [ 3drop reset-run-loop ] } ; : install-app-delegate ( -- ) @@ -153,6 +151,9 @@ M: cocoa-ui-backend ui init-clipboard cocoa-init-hook get call start-ui + f io-thread-running? set-global + init-thread-timer + reset-run-loop NSApp -> run ] ui-running ] with-cocoa ; diff --git a/basis/ui/event-loop/event-loop-tests.factor b/basis/ui/event-loop/event-loop-tests.factor new file mode 100644 index 0000000000..ae1d7ec8bc --- /dev/null +++ b/basis/ui/event-loop/event-loop-tests.factor @@ -0,0 +1,4 @@ +IN: ui.event-loop.tests +USING: ui.event-loop tools.test ; + +\ event-loop must-infer diff --git a/basis/ui/event-loop/event-loop.factor b/basis/ui/event-loop/event-loop.factor new file mode 100644 index 0000000000..7c08d802f5 --- /dev/null +++ b/basis/ui/event-loop/event-loop.factor @@ -0,0 +1,18 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: calendar combinators deques kernel namespaces sequences +threads ui ui.backend ui.gadgets ; +IN: ui.event-loop + +: event-loop? ( -- ? ) + { + { [ graft-queue deque-empty? not ] [ t ] } + { [ windows get-global empty? not ] [ t ] } + [ f ] + } cond ; + +HOOK: do-events ui-backend ( -- ) + +: event-loop ( -- ) [ event-loop? ] [ do-events ] [ ] while ; + +: ui-wait ( -- ) 10 milliseconds sleep ; diff --git a/basis/ui/tools/deploy/deploy.factor b/basis/ui/tools/deploy/deploy.factor index f233c9f162..38db81c3dc 100644 --- a/basis/ui/tools/deploy/deploy.factor +++ b/basis/ui/tools/deploy/deploy.factor @@ -18,10 +18,6 @@ TUPLE: deploy-gadget < pack vocab settings ; deploy-ui? get "Include user interface framework" add-gadget ; -: exit-when-windows-closed ( parent -- parent ) - "stop-after-last-window?" get - "Exit when last UI window closed" add-gadget ; - : io-settings ( parent -- parent ) "Input/output support:"