     ] while ;
 
 : start-ui-thread ( -- )
-    [ self ui-thread set-global update-ui-loop ]
-    "UI update" spawn drop ;
+    [ update-ui-loop ] "UI update" spawn drop ;
 
 : start-ui ( quot -- )
     call( -- ) notify-ui-thread start-ui-thread ;

    ! run one iteration of update-ui. If that also fails, well, the
    ! whole UI subsystem is broken so we throw the error to terminate
    ! the update-ui-loop.
    [ { [ ui-running? ] [ ui-thread get-global self eq? ] } 0&& ]
    [
        ui-notify-flag get lower-flag
        [ update-ui ] [

    redraw-worlds
    send-queued-gestures ;

: ui-running ( quot -- )
    t \ ui-running set-global
    [ f \ ui-running set-global ] [ ] cleanup ; inline
