Better profile support, only 1 web server per context, multiple windows per context

This commit is contained in:
2026-03-12 00:23:27 +01:00
parent 7d234bc834
commit d99c5a1725
13 changed files with 314 additions and 168 deletions

View File

@@ -15,7 +15,8 @@
(provide rkt-wv
rkt-wv-win
rkt-webview-new-context
rkt-webview-create
rkt-webview-close
rkt-webview-set-ou-token
@@ -256,6 +257,11 @@
(define-rktwebview rkt_webview_init
(_fun -> _void))
;RKTWEBVIEW_QT_EXPORT rkt_wv_context_t rkt_webview_new_context(const char *boilerplate_js,
; const char *optional_server_cert_pem);
(define-rktwebview rkt_webview_new_context
(_fun _string/utf-8 _bytes -> _int))
;RKTWEBVIEW_QT_EXPORT void rkt_webview_process_events(int for_ms);
(define-rktwebview rkt_webview_process_events
(_fun _int -> _void))
@@ -268,14 +274,13 @@
(define-rktwebview rkt_webview_version
(_fun -> _rkt_data_t-pointer))
;RKTWEBVIEW_QT_EXPORT int rkt_webview_create(rktwebview_t parent,
; event_cb_t js_event_cb,
; const char *optional_server_cert_pem);
; RKTWEBVIEW_QT_EXPORT int rkt_webview_create(rkt_wv_context_t context,
; rktwebview_t parent,
; event_cb_t js_event_cb);
(define-rktwebview rkt_webview_create
(_fun _int
(_fun _int _int
(_fun #:keep callback-box #:async-apply applier
_rkt_data_t-pointer -> _void)
_bytes
-> _int))
;RKTWEBVIEW_QT_EXPORT void rkt_webview_close(int wv);
@@ -415,14 +420,18 @@
)
'done))
(define (rkt-webview-create parent evt-callback close-callback server-cert)
(define (rkt-webview-new-context boilerplate-js server-cert)
(rkt_webview_new_context boilerplate-js server-cert))
(define (rkt-webview-create context parent evt-callback close-callback)
(let* ((evt-queue (make-queue))
(parent-win (if (eq? parent #f) 0 (rkt-wv-win parent)))
)
(let ((wv (rkt_webview_create parent-win
(let ((wv (rkt_webview_create context parent-win
(λ (rkt-evt)
(enqueue! evt-queue rkt-evt))
server-cert)))
(enqueue! evt-queue rkt-evt)))))
(let ((handle (make-rkt-wv wv evt-queue evt-callback #t close-callback)))
(thread (λ ()
(sleep 1)