X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=loopy.scm;h=c78197a5c1c090f9132636b71ce5c69f3f9d4258;hb=a92d497f62a50199799da48b9653903060f6d9be;hp=3113f82d94aa23f584c54fce89770b06f1915ffe;hpb=fdc84b774f719102a9c47132994d2ea83bbbcae8;p=8sync.git diff --git a/loopy.scm b/loopy.scm index 3113f82..c78197a 100644 --- a/loopy.scm +++ b/loopy.scm @@ -174,12 +174,12 @@ Will produce (0 . 0) instead of a negative number, if needed." (define (time-minus time1 time2) (time-carry-correct (cons (- (car time1) (car time2)) - (- (car time2) (cdr time2))))) + (- (cdr time2) (cdr time2))))) (define (time-plus time1 time2) (time-carry-correct (cons (+ (car time1) (car time2)) - (+ (car time2) (cdr time2))))) + (+ (cdr time2) (cdr time2))))) (define-record-type @@ -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))))))