From 0cecbe1d32d853125acd55d8423d6e45bca672bf Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Sun, 27 Oct 2019 14:00:56 -0400 Subject: [PATCH] Pull in message queue, put scheme code in separate file --- browser.c | 17 +++-------------- browser.scm | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 browser.scm diff --git a/browser.c b/browser.c index 1bbb73b..2b38d62 100644 --- a/browser.c +++ b/browser.c @@ -81,24 +81,13 @@ static void run_repl(void *data, int argc, char **argv) { load_modules(); + GAsyncQueue *message_qu = g_async_queue_new(); + scm_c_define_gsubr("launch-webkit-blocking", 1, 0, 0, launch_webkit); scm_c_define_gsubr("open-page-with-webview", 2, 0, 0, open_page); scm_c_define_gsubr("make-webview", 0, 0, 0, make_webview); - const char *start_expr = "" - "(define atomic-webview (make-atomic-box #f))" - "(define (open-page url)" - "(cond" - "((atomic-box-ref atomic-webview)" - "(open-page-with-webview (atomic-box-ref atomic-webview) url))" - "(else #f)))" - "(call-with-new-thread" - "(lambda () " - "(define webview (make-webview))" - "(atomic-box-set! atomic-webview webview)" - "(launch-webkit-blocking webview)))"; - - scm_c_eval_string(start_expr); + scm_c_primitive_load("./browser.scm"); scm_shell(argc, argv); } diff --git a/browser.scm b/browser.scm new file mode 100644 index 0000000..cb2bcdb --- /dev/null +++ b/browser.scm @@ -0,0 +1,15 @@ + +(define atomic-webview (make-atomic-box #f)) + +(define (open-page url) + (cond + ((atomic-box-ref atomic-webview) + (open-page-with-webview (atomic-box-ref atomic-webview) url)) + (else #f))) + +(call-with-new-thread + (lambda () + (define webview (make-webview)) + + (atomic-box-set! atomic-webview webview) + (launch-webkit-blocking webview)))