mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 00:06:09 +03:00
kevent properly blocks
kevent returns immediately if (1) event list is empty or (2) changelist is NOT empty. This forces CPU on mac to be very high because this becomes a hot loop.
This commit is contained in:
@ -108,8 +108,16 @@ fn threadMain(self: *Embed) void {
|
|||||||
.tv_nsec = @mod(timeout, 1000) * 1000000,
|
.tv_nsec = @mod(timeout, 1000) * 1000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
var ev: [0]std.os.Kevent = undefined;
|
// Important: for kevent to block properly, it needs an
|
||||||
_ = std.os.kevent(fd, &ev, &ev, &ts) catch |err| blk: {
|
// EMPTY changeset and a NON-EMPTY event set.
|
||||||
|
var changes: [0]std.os.Kevent = undefined;
|
||||||
|
var events: [1]std.os.Kevent = undefined;
|
||||||
|
_ = std.os.kevent(
|
||||||
|
fd,
|
||||||
|
&changes,
|
||||||
|
&events,
|
||||||
|
if (timeout < 0) null else &ts,
|
||||||
|
) catch |err| blk: {
|
||||||
log.err("kevent error: {}", .{err});
|
log.err("kevent error: {}", .{err});
|
||||||
break :blk 0;
|
break :blk 0;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user