X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=loopy.scm;h=c78197a5c1c090f9132636b71ce5c69f3f9d4258;hp=5477af677f65d7e8464eb3af686e1a1b591484c8;hb=a92d497f62a50199799da48b9653903060f6d9be;hpb=9ed57ce7714e4228941d689aa717196d3280db43 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))))))