From a37908e00ec37993e59ba1b5b95df50d5764f7eb Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 23 Nov 2009 19:19:34 -0600 Subject: [PATCH] store the current alarm in current-alarm --- basis/alarms/alarms.factor | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/basis/alarms/alarms.factor b/basis/alarms/alarms.factor index c2cee3afb4..9ab30a1fa4 100644 --- a/basis/alarms/alarms.factor +++ b/basis/alarms/alarms.factor @@ -13,6 +13,7 @@ TUPLE: alarm SYMBOL: alarms SYMBOL: alarm-thread +SYMBOL: current-alarm : cancel-alarm ( alarm -- ) entry>> [ alarms get-global heap-delete ] if-box? ; @@ -49,9 +50,14 @@ M: duration >nanoseconds duration>nanoseconds >integer ; [ entry>> box> drop ] [ dup interval>> [ reschedule-alarm ] [ drop ] if ] [ - [ quot>> ] [ ] bi - '[ _ [ _ dup interval>> [ cancel-alarm ] [ drop ] if rethrow ] recover ] - "Alarm execution" spawn drop + [ ] [ quot>> ] [ ] tri + '[ + _ current-alarm + [ + _ [ _ dup interval>> [ cancel-alarm ] [ drop ] if rethrow ] + recover + ] with-variable + ] "Alarm execution" spawn drop ] tri ; : (trigger-alarms) ( alarms n -- )