browser: pass vm as argument

This commit is contained in:
Pierre Tachoire
2024-01-15 16:49:37 +01:00
parent 3f23f2e7ef
commit 4408c3dc5d
2 changed files with 9 additions and 13 deletions

View File

@@ -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"),

View File

@@ -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();