From 6a1e1f5ace312b6f43ea9ac19f06de35043f3be5 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Fri, 26 Jun 2026 15:29:18 +0800 Subject: [PATCH] fix: Crash on requestAnimationFrame from Worker https://github.com/lightpanda-io/browser/pull/2817 added support for RAF to workers (largely as a consequence of the real effort), but this wasn't wired all the way through. --- src/browser/webapi/Timers.zig | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/browser/webapi/Timers.zig b/src/browser/webapi/Timers.zig index f3ac1c610..c92f7973b 100644 --- a/src/browser/webapi/Timers.zig +++ b/src/browser/webapi/Timers.zig @@ -193,13 +193,11 @@ const ScheduleCallback = struct { }; }, .animation_frame => { - // requestAnimationFrame is window-only; if a worker ever - // schedules with this mode it's a programming error. - const window = switch (self.exec.js.global) { - .frame => |frame| frame.window, - .worker => unreachable, + const now = switch (self.exec.js.global) { + .frame => |frame| frame.window._performance.now(), + .worker => |worker| worker._performance.now(), }; - ls.toLocal(self.cb).call(void, .{window._performance.now()}) catch |err| { + ls.toLocal(self.cb).call(void, .{now}) catch |err| { log.warn(.js, "RAF", .{ .name = self.name, .err = err }); }; },