1
0
mirror of https://codeberg.org/cage/tinmop/ synced 2025-03-03 10:07:36 +01:00

- prevented a condition variable to be awaken even if condition is not actually met.

This commit is contained in:
cage 2022-02-11 14:12:02 +01:00
parent 18110dbd42
commit 1234936175
2 changed files with 7 additions and 2 deletions

View File

@ -258,7 +258,7 @@
(with-accessors ((lock lock) (with-accessors ((lock lock)
(condition-variable condition-variable)) object (condition-variable condition-variable)) object
(setf (command-window:echo-character specials:*command-window*) (setf (command-window:echo-character specials:*command-window*)
nil) :completed)
(with-lock (lock) (with-lock (lock)
(bt:condition-notify condition-variable)))) (bt:condition-notify condition-variable))))

View File

@ -229,7 +229,12 @@
(condition-variable condition-variable)) event (condition-variable condition-variable)) event
(push-event event) (push-event event)
(with-lock (lock) (with-lock (lock)
(bt:condition-wait condition-variable lock) (loop
while (not (eq (command-window:echo-character *command-window*)
:completed))
do
(bt:condition-wait condition-variable lock))
(setf (command-window:echo-character *command-window*) nil)
(funcall on-input-complete-fn (box:dunbox (payload event)))))))) (funcall on-input-complete-fn (box:dunbox (payload event))))))))
(bt:make-thread #'thread-fn))) (bt:make-thread #'thread-fn)))