]> gitweb.factorcode.org Git - factor.git/commitdiff
models.delay: cache the timer, bug with restart-timer.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 11 Jan 2019 05:41:34 +0000 (21:41 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 11 Jan 2019 05:41:34 +0000 (21:41 -0800)
basis/models/delay/delay.factor

index bb5dc24a5c3c4a0b0acd2cd613d2a334ed748404..cb903b61507fb0fefa5f4d60fe88a4a943362e0d 100644 (file)
@@ -10,18 +10,15 @@ TUPLE: delay < model model timeout timer ;
 
 : <delay> ( model timeout -- delay )
     f delay new-model
+        dup '[ _ update-delay-model ] pick f <timer> >>timer
         swap >>timeout
         over >>model
     [ add-dependency ] keep ;
 
-: stop-delay ( delay -- )
-    timer>> [ stop-timer ] when* ;
+M: delay model-changed
+    ! BUG: timer can't be "restart-timer" inside of its quotation?
+    ! nip timer>> restart-timer ;
+    nip timer>> [ stop-timer ] [ start-timer ] bi ;
 
-: start-delay ( delay -- )
-    [ '[ _ f >>timer update-delay-model ] ]
-    [ timeout>> later ]
-    [ timer<< ] tri ;
-
-M: delay model-changed nip dup stop-delay start-delay ;
 
 M: delay model-activated update-delay-model ;