trying to stop cleanly

This commit is contained in:
2026-04-18 15:26:49 +02:00
parent 262859d2ea
commit 472a539133

View File

@@ -577,14 +577,20 @@
) ; close without closing windows
)
(define evt-guard-stop -93273)
(define (start-event-processing)
(thread (λ ()
(letrec
((f
(λ ()
(let ((waiting (sync events-channel)))
(if (= waiting evt-guard-stop)
(begin
(displayln "got evt-guard-stop, exiting event processing")
evt-guard-stop)
(begin
(set! waiting (rkt_webview_events_waiting))
;(displayln (format "Events waiting: ~a" waiting))
(while (> waiting 0)
(let* ((rkt-evt (rkt_webview_get_event)))
(if (eq? rkt-evt #f)
@@ -605,10 +611,13 @@
(cb evt)))))))
(set! waiting (- waiting 1))
)
)
(f))
)
)
)
))
(f)))))
(f))))
)
(define evt-processing-thread (start-event-processing))
@@ -813,6 +822,7 @@
(define (rkt-webview-finalizer rkt-wv-store close-windows message)
(displayln "rkt-webview-finalizer active")
(when close-windows
(let ((open-windows (hash->list rkt-wv-store)))
(for-each (λ (kv)
@@ -820,6 +830,7 @@
(handle (cdr kv)))
(rkt-webview-close handle)))
open-windows)))
(event-callback evt-guard-stop)
(rkt_webview_cleanup)
(unless (eq? message #f) (error message))
(stop-event-processing)