From 78b5c1db7720d126d48aa2e6248919bd50c846cf Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 15 Oct 2023 21:35:13 -0700 Subject: [PATCH] renderer: handle error.NotFound for timer cancellation Fixes #685 This is expected in very rare scenarios where under heavy load, a timer could complete before a cancellation request is processed, resulting in a "not found". --- src/renderer/Thread.zig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/renderer/Thread.zig b/src/renderer/Thread.zig index 90d8c3377..df3001b4e 100644 --- a/src/renderer/Thread.zig +++ b/src/renderer/Thread.zig @@ -382,11 +382,13 @@ fn cursorCancelCallback( // support different sets of errors, so we just unify it. const CancelError = xev.Timer.CancelError || error{ Canceled, + NotFound, Unexpected, }; _ = r catch |err| switch (@as(CancelError, @errorCast(err))) { - error.Canceled => {}, + error.Canceled => {}, // success + error.NotFound => {}, // completed before it could cancel else => { log.warn("error in cursor cancel callback err={}", .{err}); unreachable;