]> gitweb.factorcode.org Git - factor.git/commitdiff
Clean up timer code
authorslava <slava@factorcode.org>
Mon, 9 Oct 2006 17:38:53 +0000 (17:38 +0000)
committerslava <slava@factorcode.org>
Mon, 9 Oct 2006 17:38:53 +0000 (17:38 +0000)
library/ui/gadgets.factor
library/ui/gadgets/buttons.factor
library/ui/timers.factor

index 840a436868a2012e0574e665360592aa1a9fa6c1..25608fe2b0a65790bcf8ac8a518530c10aa1b91b 100644 (file)
@@ -124,13 +124,13 @@ TUPLE: timer-gadget quot ;
 C: timer-gadget ( gadget -- gadget )
     [ set-gadget-delegate ] keep ;
 
-M: timer-gadget tick nip timer-gadget-quot call ;
+M: timer-gadget tick timer-gadget-quot call ;
 
 : start-timer-gadget ( gadget quot -- )
     2dup call
     over >r curry r>
     [ set-timer-gadget-quot ] keep
-    100 add-timer ; inline
+    100 200 add-timer ; inline
 
 : stop-timer-gadget ( gadget -- )
     dup remove-timer f swap set-timer-gadget-quot ;
index ab51994440ef19274de8df75bbea3ffc84d12620..0ace577021192ff5f67a967a0cbfa37afacd5bc1 100644 (file)
@@ -53,12 +53,6 @@ C: button ( gadget quot -- button )
 : <bevel-button> ( gadget quot -- button )
     <button> dup bevel-button-theme ;
 
-: repeat-button-down ( button -- )
-    dup 100 add-timer button-clicked ;
-
-: repeat-button-up ( button -- )
-    dup button-update remove-timer ;
-
 TUPLE: repeat-button ;
 
 repeat-button H{
index 4575ed6b40d433f48a0256735ec89b75a163a58a..959190942322cafa06ea077514283d08ec14e16e 100644 (file)
@@ -3,31 +3,29 @@
 IN: gadgets
 USING: hashtables kernel math namespaces sequences ;
 
-TUPLE: timer object delay last ;
+TUPLE: timer object delay next ;
 
-C: timer ( object delay -- timer )
+C: timer ( object delay initial -- timer )
+    [ >r millis + r> set-timer-next ] keep
     [ set-timer-delay ] keep
-    [ set-timer-object ] keep
-    millis over set-timer-last ;
+    [ set-timer-object ] keep ;
 
-GENERIC: tick ( ms object -- )
+GENERIC: tick ( object -- )
 
 : timers \ timers get-global ;
 
 : init-timers ( -- ) H{ } clone \ timers set-global ;
 
-: add-timer ( object delay -- )
-    over >r <timer> r> timers set-hash ;
+: add-timer ( object delay initial -- )
+    pick >r <timer> r> timers set-hash ;
 
 : remove-timer ( object -- ) timers remove-hash ;
 
-: next-time ( timer -- ms ) dup timer-delay swap timer-last + ;
-
-: advance-timer ( ms timer -- delay )
-    [ timer-last [-] ] 2keep set-timer-last ;
+: advance-timer ( ms timer -- )
+    [ timer-delay + ] keep set-timer-next ;
 
 : do-timer ( ms timer -- )
-    dup next-time pick <=
+    dup timer-next pick <=
     [ [ advance-timer ] keep timer-object tick ] [ 2drop ] if ;
 
 : do-timers ( -- )