mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 23:23:28 +00:00
page handlescope clarification
This commit is contained in:
@@ -345,8 +345,7 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
const isolate = env.isolate;
|
const isolate = env.isolate;
|
||||||
const Global = @TypeOf(global.*);
|
const Global = @TypeOf(global.*);
|
||||||
|
|
||||||
var context: v8.Context = undefined;
|
var context: v8.Context = blk: {
|
||||||
{
|
|
||||||
var handle_scope: v8.HandleScope = undefined;
|
var handle_scope: v8.HandleScope = undefined;
|
||||||
v8.HandleScope.init(&handle_scope, isolate);
|
v8.HandleScope.init(&handle_scope, isolate);
|
||||||
defer handle_scope.deinit();
|
defer handle_scope.deinit();
|
||||||
@@ -379,7 +378,7 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const context_local = v8.Context.init(isolate, global_template, null);
|
const context_local = v8.Context.init(isolate, global_template, null);
|
||||||
context = v8.Persistent(v8.Context).init(isolate, context_local).castToContext();
|
const context = v8.Persistent(v8.Context).init(isolate, context_local).castToContext();
|
||||||
context.enter();
|
context.enter();
|
||||||
errdefer if (enter) context.exit();
|
errdefer if (enter) context.exit();
|
||||||
defer if (!enter) context.exit();
|
defer if (!enter) context.exit();
|
||||||
@@ -404,8 +403,12 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
_ = self_obj.setPrototype(context, proto_obj);
|
_ = self_obj.setPrototype(context, proto_obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
break :blk context;
|
||||||
|
};
|
||||||
|
|
||||||
|
// For a Page we only create one HandleScope, it is stored in the main World (enter==true). A page can have multple contexts, 1 for each World.
|
||||||
|
// The main Context/Scope that enters and holds the HandleScope should therefore always be created first. Following other worlds for this page
|
||||||
|
// like isolated Worlds, will thereby place their objects on the main page's HandleScope. Note: In the furure the number of context will multiply multiple frames support
|
||||||
var handle_scope: ?v8.HandleScope = null;
|
var handle_scope: ?v8.HandleScope = null;
|
||||||
if (enter) {
|
if (enter) {
|
||||||
handle_scope = @as(v8.HandleScope, undefined);
|
handle_scope = @as(v8.HandleScope, undefined);
|
||||||
|
|||||||
Reference in New Issue
Block a user