mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-23 22:58:00 -05:00
prefer low priority queue to execute performance observer
This commit is contained in:
@@ -971,16 +971,6 @@ pub fn tick(self: *Page) void {
|
|||||||
_ = self.scheduler.run() catch |err| {
|
_ = self.scheduler.run() catch |err| {
|
||||||
log.err(.page, "tick", .{ .err = err });
|
log.err(.page, "tick", .{ .err = err });
|
||||||
};
|
};
|
||||||
|
|
||||||
// Dispatch performance observer events.
|
|
||||||
for (self._performance_observers.items) |observer| {
|
|
||||||
if (observer.hasRecords()) {
|
|
||||||
observer.dispatch(self) catch |err| {
|
|
||||||
log.err(.page, "tcik", .{ .err = err });
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.js.runMicrotasks();
|
self.js.runMicrotasks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1088,7 +1078,28 @@ pub fn notifyPerformanceObservers(self: *Page, entry: *Performance.Entry) !void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self._performance_delivery_scheduled = true;
|
if (self._performance_delivery_scheduled == false) {
|
||||||
|
self._performance_delivery_scheduled = true;
|
||||||
|
try self.scheduler.add(
|
||||||
|
self,
|
||||||
|
struct {
|
||||||
|
fn run(_page: *anyopaque) anyerror!?u32 {
|
||||||
|
const page: *Page = @ptrCast(@alignCast(_page));
|
||||||
|
page._performance_delivery_scheduled = true;
|
||||||
|
// Dispatch performance observer events.
|
||||||
|
for (page._performance_observers.items) |observer| {
|
||||||
|
if (observer.hasRecords()) {
|
||||||
|
try observer.dispatch(page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}.run,
|
||||||
|
0,
|
||||||
|
.{ .low_priority = true },
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn registerMutationObserver(self: *Page, observer: *MutationObserver) !void {
|
pub fn registerMutationObserver(self: *Page, observer: *MutationObserver) !void {
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ pub fn measure(
|
|||||||
page,
|
page,
|
||||||
);
|
);
|
||||||
try self._entries.append(page.arena, m._proto);
|
try self._entries.append(page.arena, m._proto);
|
||||||
|
// Notify about the change.
|
||||||
|
try page.notifyPerformanceObservers(m._proto);
|
||||||
return m;
|
return m;
|
||||||
},
|
},
|
||||||
.start_mark => |start_mark| {
|
.start_mark => |start_mark| {
|
||||||
@@ -125,12 +127,16 @@ pub fn measure(
|
|||||||
page,
|
page,
|
||||||
);
|
);
|
||||||
try self._entries.append(page.arena, m._proto);
|
try self._entries.append(page.arena, m._proto);
|
||||||
|
// Notify about the change.
|
||||||
|
try page.notifyPerformanceObservers(m._proto);
|
||||||
return m;
|
return m;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const m = try Measure.init(name, null, 0.0, self.now(), null, page);
|
const m = try Measure.init(name, null, 0.0, self.now(), null, page);
|
||||||
try self._entries.append(page.arena, m._proto);
|
try self._entries.append(page.arena, m._proto);
|
||||||
|
// Notify about the change.
|
||||||
|
try page.notifyPerformanceObservers(m._proto);
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user