oops
parent
af639e3e67
commit
8bca326561
|
|
@ -120,8 +120,8 @@ t [
|
|||
"/library/ui/editors.factor"
|
||||
"/library/ui/menus.factor"
|
||||
"/library/ui/presentations.factor"
|
||||
"/library/ui/tiles.factor"
|
||||
"/library/ui/panes.factor"
|
||||
"/library/ui/tiles.factor"
|
||||
"/library/ui/dialogs.factor"
|
||||
"/library/ui/inspector.factor"
|
||||
"/library/ui/init-world.factor"
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
! Copyright (C) 2004, 2005 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
IN: threads USING: errors io-internals kernel lists ;
|
||||
|
||||
: in-thread ( quot -- )
|
||||
#! Execute a quotation in a co-operative thread. The
|
||||
#! quotation begins executing immediately, and execution
|
||||
#! after the 'in-thread' call in the original thread
|
||||
#! resumes when the quotation yields, either due to blocking
|
||||
#! I/O or an explicit call to 'yield'.
|
||||
[
|
||||
schedule-thread
|
||||
! Clear stacks since we never go up from this point
|
||||
[ ] set-catchstack
|
||||
{ } set-callstack
|
||||
try
|
||||
stop
|
||||
] callcc0 drop ;
|
||||
|
|
@ -2,8 +2,7 @@
|
|||
! Copyright (C) 2005 Mackenzie Straight.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
IN: threads
|
||||
USING: errors io-internals kernel kernel-internals lists
|
||||
namespaces ;
|
||||
USING: errors kernel kernel-internals lists namespaces ;
|
||||
|
||||
! Core of the multitasker. Used by io-internals.factor and
|
||||
! in-thread.factor.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
! Copyright (C) 2005 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
IN: gadgets
|
||||
USING: alien errors generic kernel lists math memory namespaces
|
||||
prettyprint sdl sequences stdio strings threads ;
|
||||
USING: alien errors generic kernel lists math
|
||||
memory namespaces prettyprint sdl sequences stdio strings
|
||||
threads ;
|
||||
|
||||
! The world gadget is the top level gadget that all (visible)
|
||||
! gadgets are contained in. The current world is stored in the
|
||||
|
|
@ -43,10 +44,12 @@ DEFER: handle-event
|
|||
drop f
|
||||
] ifte ;
|
||||
|
||||
: next-event ( -- event ) <event> dup SDL_PollEvent ;
|
||||
|
||||
: run-world ( -- )
|
||||
#! Keep polling for events until there are no more events in
|
||||
#! the queue; then block for the next event.
|
||||
<event> dup SDL_PollEvent [
|
||||
next-event [
|
||||
[ handle-event ] in-thread drop run-world
|
||||
] [
|
||||
drop world get world-step [ yield run-world ] when
|
||||
|
|
|
|||
|
|
@ -355,6 +355,9 @@ M: writer stream-close ( stream -- )
|
|||
: <fd-stream> ( infd outfd flush? -- stream )
|
||||
>r >r <reader> r> <writer> r> <duplex-stream> ;
|
||||
|
||||
: idle-io-task ( -- )
|
||||
[ schedule-thread 10 io-multiplex ] callcc0 idle-io-task ;
|
||||
|
||||
USE: stdio
|
||||
|
||||
: init-io ( -- )
|
||||
|
|
@ -363,12 +366,5 @@ USE: stdio
|
|||
global [
|
||||
<namespace> io-tasks set
|
||||
0 1 t <fd-stream> stdio set
|
||||
] bind ;
|
||||
|
||||
IN: threads
|
||||
|
||||
: stop ( -- )
|
||||
#! If there is a quotation in the run queue, call it,
|
||||
#! otherwise wait for I/O.
|
||||
pending-io? [ 10 io-multiplex ] when
|
||||
next-thread [ call ] [ -1 io-multiplex stop ] ifte* ;
|
||||
] bind
|
||||
[ idle-io-task ] in-thread ;
|
||||
|
|
|
|||
Loading…
Reference in New Issue