From 02fbc54e074f677074e7495348d905cc88bdc35a Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Mon, 23 Mar 2026 23:32:37 +0100 Subject: [PATCH] with shared memory --- private/lib/linux/x86_64/librktwebview_qt.so | Bin 239424 -> 239416 bytes private/racket-webview-qt.rkt | 10 ++++-- rktwebview_qt/CMakeLists.txt | 3 ++ rktwebview_qt/rktwebview.cpp | 31 ++++++++++++++++++- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/private/lib/linux/x86_64/librktwebview_qt.so b/private/lib/linux/x86_64/librktwebview_qt.so index d388aa28d812dedb911d81289dc5008318457adc..6aaa0b002dcd20a889243bdb8a2a86fb0b66e882 100755 GIT binary patch delta 27360 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 tVukPc^={-lq9?QC{L(H@>~ #include #include "rktwebview_qt.h" +#include "shmqueue.h" uint64_t current_ms() { using namespace std::chrono; @@ -17,7 +18,14 @@ uint64_t current_ms() { // Main C Interface ///////////////////////////////////////////////////////////////////// -Rktwebview_qt *handler = nullptr; +typedef struct { + Shm *shm; + ShmQueue *command_queue; + ShmQueue *event_queue; + Rktwebview_qt *rkt; +} Handle_t; + +Handle_t *handler = nullptr; void rkt_webview_cleanup() { @@ -25,6 +33,27 @@ void rkt_webview_cleanup() // Does nothing. // See QTBUG-145033 // QtWebEngine cannot be started as part of QApplication more than once in an application run. + // So we would need to cleanup at exit of racket/drracket. + // Cleaning up when exiting the current custodian is not enough. + + /* + QApplication *app = handler->app(); + if (app != nullptr) { + // testing with #:custodian (current-custodian) + QTimer t; + QObject::connect(&t, &QTimer::timeout, app, [app]() { + fprintf(stderr, "Quitting\n"); + app->quit(); + }); + t.setSingleShot(true); + t.start(250); + fprintf(stderr, "Executing app\n"); + app->exec(); + fprintf(stderr, "App exited\n"); + delete handler; + handler = nullptr; + } + */ } }