Another attempt on quitting cleanly

This commit is contained in:
2026-04-18 15:50:41 +02:00
parent fb7d8f9d2c
commit 383d1bafba

View File

@@ -587,14 +587,15 @@
(let ((waiting (sync events-channel))) (let ((waiting (sync events-channel)))
(if (= waiting evt-guard-stop) (if (= waiting evt-guard-stop)
(begin (begin
(displayln "got evt-guard-stop, exiting event processing") (info-webview "got evt-guard-stop, exiting event processing")
(set! evt-processing-thread #f)
evt-guard-stop) evt-guard-stop)
(begin (begin
(set! waiting (rkt_webview_events_waiting)) (set! waiting (rkt_webview_events_waiting))
(while (> waiting 0) (while (> waiting 0)
(let* ((rkt-evt (rkt_webview_get_event))) (let* ((rkt-evt (rkt_webview_get_event)))
(if (eq? rkt-evt #f) (if (eq? rkt-evt #f)
(displayln (format "Unexpected: event = nullptr")) (err-webview (format "Unexpected: event = nullptr"))
(let* ((data (rkt_data_t-data rkt-evt)) (let* ((data (rkt_data_t-data rkt-evt))
(e (union-ref data 1)) (e (union-ref data 1))
(wv (rkt_evt_t-w e)) (wv (rkt_evt_t-w e))
@@ -622,7 +623,9 @@
(define evt-processing-thread (start-event-processing)) (define evt-processing-thread (start-event-processing))
(define (stop-event-processing) (define (stop-event-processing)
(unless (eq? evt-processing-thread #f)
(kill-thread evt-processing-thread)) (kill-thread evt-processing-thread))
(set! evt-processing-thread #f))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Provided features ;; Provided features
@@ -822,7 +825,7 @@
(define (rkt-webview-finalizer rkt-wv-store close-windows message) (define (rkt-webview-finalizer rkt-wv-store close-windows message)
(displayln "rkt-webview-finalizer active") (dbg-webview "rkt-webview-finalizer active")
(when close-windows (when close-windows
(let ((open-windows (hash->list rkt-wv-store))) (let ((open-windows (hash->list rkt-wv-store)))
(for-each (λ (kv) (for-each (λ (kv)
@@ -830,14 +833,15 @@
(handle (cdr kv))) (handle (cdr kv)))
(rkt-webview-close handle))) (rkt-webview-close handle)))
open-windows))) open-windows)))
(displayln "Sending guard-stop message to event callback") (dbg-webview "Sending guard-stop message to event callback")
;(sleep 0.5)
(event-callback evt-guard-stop) (event-callback evt-guard-stop)
(displayln "Cleaning up FFI library") (dbg-webview "Cleaning up FFI library")
(rkt_webview_cleanup) (rkt_webview_cleanup)
(unless (eq? message #f) (error message)) (unless (eq? message #f) (error message))
(displayln "Stopping event processing thread (kill-thread)") (dbg-webview "Stopping event processing thread (kill-thread)")
(stop-event-processing) (stop-event-processing)
(displayln "Finalizer done") (dbg-webview "Finalizer done")
) )
(define (rkt-webview-exit . args) (define (rkt-webview-exit . args)