rem: unnecessary signal handler
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 2m1s

No event-based re-sizing, instead each re-render resizes by default.
This commit is contained in:
2025-04-01 21:53:52 +02:00
parent 962a384ecf
commit bce134f052

View File

@@ -44,13 +44,13 @@ pub fn App(comptime E: type) type {
const element = @import("element.zig");
pub const Element = element.Element(Event);
pub const Scrollable = element.Scrollable(Event);
pub const Exec = element.Exec(Event, Queue);
pub const Queue = queue.Queue(Event, 256);
queue: Queue,
thread: ?std.Thread,
thread: ?std.Thread = null,
quit_event: std.Thread.ResetEvent,
termios: ?std.posix.termios = null,
attached_handler: bool = false,
pub const SignalHandler = struct {
context: *anyopaque,
@@ -59,32 +59,14 @@ pub fn App(comptime E: type) type {
pub const init: @This() = .{
.queue = .{},
.thread = null,
.quit_event = .{},
.termios = null,
.attached_handler = false,
};
pub fn start(this: *@This()) !void {
if (this.thread) |_| return;
if (!this.attached_handler) {
var winch_act = std.posix.Sigaction{
.handler = .{ .handler = @This().handleWinch },
.mask = std.posix.empty_sigset,
.flags = 0,
};
std.posix.sigaction(std.posix.SIG.WINCH, &winch_act, null);
try registerWinch(.{
.context = this,
.callback = @This().winsizeCallback,
});
this.attached_handler = true;
// post init event (as the very first element to be in the queue - event loop)
this.postEvent(.init);
}
// post init event (as the very first element to be in the queue - event loop)
this.postEvent(.init);
this.quit_event.reset();
this.thread = try std.Thread.spawn(.{}, @This().run, .{this});
@@ -139,27 +121,6 @@ pub fn App(comptime E: type) type {
this.queue.push(e);
}
fn winsizeCallback(ptr: *anyopaque) void {
const this: *@This() = @ptrCast(@alignCast(ptr));
_ = this;
// this.postEvent(.{ .size = terminal.getTerminalSize() });
}
var winch_handler: ?SignalHandler = null;
fn registerWinch(handler: SignalHandler) !void {
if (winch_handler) |_| {
@panic("Cannot register another WINCH handler.");
}
winch_handler = handler;
}
fn handleWinch(_: c_int) callconv(.C) void {
if (winch_handler) |handler| {
handler.callback(handler.context);
}
}
fn run(this: *@This()) !void {
// thread to read user inputs
var buf: [256]u8 = undefined;