finalizer again

This commit is contained in:
2026-04-18 16:57:29 +02:00
parent 42073af8e9
commit 63b7692b59

View File

@@ -824,24 +824,28 @@
#t))) #t)))
(define finalizer-executed #f)
(define (rkt-webview-finalizer rkt-wv-store close-windows message) (define (rkt-webview-finalizer rkt-wv-store close-windows message)
(dbg-webview "rkt-webview-finalizer active") (unless finalizer-executed
(when close-windows (dbg-webview "rkt-webview-finalizer active")
(let ((open-windows (hash->list rkt-wv-store))) (when close-windows
(for-each (λ (kv) (let ((open-windows (hash->list rkt-wv-store)))
(let ((win (car kv)) (for-each (λ (kv)
(handle (cdr kv))) (let ((win (car kv))
(rkt-webview-close handle))) (handle (cdr kv)))
open-windows))) (rkt-webview-close handle)))
(rkt_webview_register_evt_callback #f) open-windows)))
(dbg-webview "Sending guard-stop message to event callback") (dbg-webview "Sending guard-stop message to event callback")
(event-callback evt-guard-stop) (event-callback evt-guard-stop)
(dbg-webview "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))
(dbg-webview "Stopping event processing thread (kill-thread)") (dbg-webview "Stopping event processing thread (kill-thread)")
(stop-event-processing) (stop-event-processing)
(dbg-webview "Finalizer done") (dbg-webview "Finalizer done")
(set finalizer-executed #t)
)
) )
(define (rkt-webview-exit . args) (define (rkt-webview-exit . args)
@@ -853,7 +857,8 @@
) )
(rkt-webview-finalizer rkt-wv-store cl-w msg) (rkt-webview-finalizer rkt-wv-store cl-w msg)
(unregister-custodian-shutdown rkt-wv-store custodian-finalizer) (unregister-custodian-shutdown rkt-wv-store custodian-finalizer)
)) )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Cleanup on exit ;; Cleanup on exit