From 4408c3dc5da831110ae2656d5f1f477895954be2 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 15 Jan 2024 16:49:37 +0100 Subject: [PATCH] browser: pass vm as argument --- src/browser/browser.zig | 16 ++++++---------- src/main_get.zig | 6 +++--- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 70edcd62..71bcd434 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -22,21 +22,17 @@ const log = std.log.scoped(.browser); // Browser is an instance of the browser. // You can create multiple browser instances. -// It contains only one session but initVM() and deinitVM() must be called only -// once per main. +// A browser contains only one session. +// TODO allow multiple sessions per browser. pub const Browser = struct { allocator: std.mem.Allocator, session: *Session = undefined, - var vm: jsruntime.VM = undefined; - pub fn initVM() void { - vm = jsruntime.VM.init(); - } - pub fn deinitVM() void { - vm.deinit(); - } + pub fn init(allocator: std.mem.Allocator, vm: jsruntime.VM) !Browser { + // We want to ensure the caller initialised a VM, but the browser + // doesn't use it directly... + _ = vm; - pub fn init(allocator: std.mem.Allocator) !Browser { return Browser{ .allocator = allocator, .session = try Session.init(allocator, "about:blank"), diff --git a/src/main_get.zig b/src/main_get.zig index a387df47..bb84b0d8 100644 --- a/src/main_get.zig +++ b/src/main_get.zig @@ -57,10 +57,10 @@ pub fn main() !void { std.os.exit(1); } - Browser.initVM(); - defer Browser.deinitVM(); + const vm = jsruntime.VM.init(); + defer vm.deinit(); - var browser = try Browser.init(allocator); + var browser = try Browser.init(allocator, vm); defer browser.deinit(); var page = try browser.currentSession().createPage();