main: some minor cleanup
This commit is contained in:
parent
02381539a7
commit
8c6d9431c8
93
src/main.zig
93
src/main.zig
@ -3,7 +3,6 @@ const builtin = @import("builtin");
|
|||||||
|
|
||||||
const vaxis = @import("vaxis");
|
const vaxis = @import("vaxis");
|
||||||
const xev = @import("xev");
|
const xev = @import("xev");
|
||||||
const Cell = vaxis.Cell;
|
|
||||||
|
|
||||||
const networking = @import("./networking.zig");
|
const networking = @import("./networking.zig");
|
||||||
const rotctl = @import("./rotctl.zig");
|
const rotctl = @import("./rotctl.zig");
|
||||||
@ -206,49 +205,8 @@ pub const RotInt = struct {
|
|||||||
try self.vx.render(self.termbuffer.writer().any());
|
try self.vx.render(self.termbuffer.writer().any());
|
||||||
try self.termbuffer.flush();
|
try self.termbuffer.flush();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
pub fn main() !void {
|
fn terminalEvent(
|
||||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
|
||||||
defer _ = gpa.deinit();
|
|
||||||
|
|
||||||
const alloc = gpa.allocator();
|
|
||||||
|
|
||||||
var tty = try vaxis.Tty.init();
|
|
||||||
defer tty.deinit();
|
|
||||||
|
|
||||||
var vx = try vaxis.init(alloc, .{});
|
|
||||||
defer vx.deinit(alloc, tty.anyWriter());
|
|
||||||
|
|
||||||
var pool = xev.ThreadPool.init(.{});
|
|
||||||
var loop = try xev.Loop.init(.{
|
|
||||||
.thread_pool = &pool,
|
|
||||||
});
|
|
||||||
defer loop.deinit();
|
|
||||||
|
|
||||||
var app: RotInt = .{
|
|
||||||
.allocator = alloc,
|
|
||||||
.termbuffer = tty.bufferedWriter(),
|
|
||||||
.vx = &vx,
|
|
||||||
.loop = &loop,
|
|
||||||
.poller = try xev.Timer.init(),
|
|
||||||
};
|
|
||||||
try app.initInPlace();
|
|
||||||
|
|
||||||
var vx_loop: vaxis.xev.TtyWatcher(RotInt) = undefined;
|
|
||||||
try vx_loop.init(&tty, &vx, &loop, &app, eventCallback);
|
|
||||||
|
|
||||||
try vx.enterAltScreen(tty.anyWriter());
|
|
||||||
try vx.queryTerminalSend(tty.anyWriter());
|
|
||||||
// Window size appears to be left uninitialized unless we manually set it here. This
|
|
||||||
// seems sketchy to me (tty fd should be nonblocking for the event loop)
|
|
||||||
const size = try vaxis.Tty.getWinsize(tty.fd);
|
|
||||||
vx.resize(alloc, tty.anyWriter(), size) catch @panic("TODO");
|
|
||||||
|
|
||||||
try loop.run(.until_done);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn eventCallback(
|
|
||||||
self_: ?*RotInt,
|
self_: ?*RotInt,
|
||||||
loop: *xev.Loop,
|
loop: *xev.Loop,
|
||||||
watcher: *vaxis.xev.TtyWatcher(RotInt),
|
watcher: *vaxis.xev.TtyWatcher(RotInt),
|
||||||
@ -303,19 +261,44 @@ fn eventCallback(
|
|||||||
}
|
}
|
||||||
return .rearm;
|
return .rearm;
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
fn timerCallback(
|
pub fn main() !void {
|
||||||
ud: ?*RotInt,
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
loop: *xev.Loop,
|
defer _ = gpa.deinit();
|
||||||
completion: *xev.Completion,
|
|
||||||
err: xev.Timer.RunError!void,
|
|
||||||
) xev.CallbackAction {
|
|
||||||
_ = err catch @panic("timer error");
|
|
||||||
|
|
||||||
var app = ud orelse return .disarm;
|
const alloc = gpa.allocator();
|
||||||
app.draw() catch @panic("couldn't draw");
|
|
||||||
|
|
||||||
const timer = xev.Timer.init() catch unreachable;
|
var tty = try vaxis.Tty.init();
|
||||||
timer.run(loop, completion, 8, RotInt, app, timerCallback);
|
defer tty.deinit();
|
||||||
return .disarm;
|
|
||||||
|
var vx = try vaxis.init(alloc, .{});
|
||||||
|
defer vx.deinit(alloc, tty.anyWriter());
|
||||||
|
|
||||||
|
var pool = xev.ThreadPool.init(.{});
|
||||||
|
var loop = try xev.Loop.init(.{
|
||||||
|
.thread_pool = &pool,
|
||||||
|
});
|
||||||
|
defer loop.deinit();
|
||||||
|
|
||||||
|
var app: RotInt = .{
|
||||||
|
.allocator = alloc,
|
||||||
|
.termbuffer = tty.bufferedWriter(),
|
||||||
|
.vx = &vx,
|
||||||
|
.loop = &loop,
|
||||||
|
.poller = try xev.Timer.init(),
|
||||||
|
};
|
||||||
|
try app.initInPlace();
|
||||||
|
|
||||||
|
var vx_loop: vaxis.xev.TtyWatcher(RotInt) = undefined;
|
||||||
|
try vx_loop.init(&tty, &vx, &loop, &app, RotInt.terminalEvent);
|
||||||
|
|
||||||
|
try vx.enterAltScreen(tty.anyWriter());
|
||||||
|
try vx.queryTerminalSend(tty.anyWriter());
|
||||||
|
// Window size appears to be left uninitialized unless we manually set it here. This
|
||||||
|
// seems sketchy to me (tty fd should be nonblocking for the event loop)
|
||||||
|
const size = try vaxis.Tty.getWinsize(tty.fd);
|
||||||
|
vx.resize(alloc, tty.anyWriter(), size) catch @panic("TODO");
|
||||||
|
|
||||||
|
try loop.run(.until_done);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user