From: Christopher Allan Webber Date: Fri, 20 Nov 2015 04:26:08 +0000 (-0600) Subject: More accurate timing in start-agenda... we have to update it twice X-Git-Tag: v0.1.0~135 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=a92d497f62a50199799da48b9653903060f6d9be;p=8sync.git More accurate timing in start-agenda... we have to update it twice Because of port selection is why ;p --- diff --git a/loopy.scm b/loopy.scm index 5477af6..c78197a 100644 --- a/loopy.scm +++ b/loopy.scm @@ -432,17 +432,20 @@ Will produce (0 . 0) instead of a negative number, if needed." (agenda-run-once agenda)))) (if (and stop-condition (stop-condition agenda)) 'done - (let* ((new-time (get-time)) - (agenda - (handle-ports - ;; Adjust the agenda's time just in time - ;; We do this here rather than in agenda-run-once to make - ;; agenda-run-once's behavior fairly predictable - (set-field agenda (agenda-time) new-time)))) + (let* ((agenda + ;; We have to update the time after ports handled, too + ;; because it may have changed after a select + (set-field + (handle-ports + ;; Adjust the agenda's time just in time + ;; We do this here rather than in agenda-run-once to make + ;; agenda-run-once's behavior fairly predictable + (set-field agenda (agenda-time) (get-time))) + (agenda-time) (get-time)))) ;; Update the agenda's current queue based on ;; currently applicable time segments (add-segments-contents-to-queue! - (schedule-extract-until! (agenda-schedule agenda) new-time) + (schedule-extract-until! (agenda-schedule agenda) (agenda-time agenda)) (agenda-queue agenda)) (loop agenda))))))